Voy a realizar un examen escrito en una empresa de software el 21 de diciembre. El alcance es sobre VB y JAVA. ¿Podrían ayudarme con algunas preguntas relevantes?
Conjunto de preguntas de la entrevista JAVA
Conocimientos básicos:
1. Principios simples y aplicaciones de mecanismos de manejo de excepciones en C o Java.
Cuando un programa JAVA viola las reglas semánticas de JAVA, la máquina virtual JAVA expresará el error como una excepción. Las violaciones de las reglas semánticas incluyen
dos situaciones. Una es la verificación semántica integrada en la biblioteca de clases JAVA. Por ejemplo, si el subíndice de la matriz está fuera de los límites, se generará una excepción IndexOutOfBoundsException al acceder a un objeto nulo y se generará una excepción NullPointerException; Otra situación es que JAVA permite a los programadores ampliar esta verificación semántica. Los programadores pueden crear sus propias excepciones y elegir libremente cuándo lanzar excepciones utilizando la palabra clave throw. Todas las excepciones son subclases de java.lang.Thowable
.
2. Las similitudes y diferencias entre las interfaces Java y las clases virtuales C.
Dado que Java no admite la herencia múltiple, es posible que una determinada clase u objeto necesite utilizar métodos o atributos en varias clases u objetos. El mecanismo de herencia único existente
No puede. aceptar exigencias. En comparación con la herencia, las interfaces brindan mayor flexibilidad porque no hay código de implementación en la interfaz. Cuando una clase
implementa una interfaz, la clase debe implementar todos los métodos y propiedades en la interfaz, y las propiedades en la interfaz son
públicas estáticas de forma predeterminada, y todos los métodos son público de forma predeterminada. Una clase puede implementar múltiples interfaces.
3. Ventajas y principios de la recogida de basura. Y considere 2 mecanismos de reciclaje.
Una característica notable del lenguaje Java es la introducción de un mecanismo de recolección de basura, que resuelve el problema de administración de memoria más problemático para los programadores de C.
Ya no permite a los programadores de Java. Necesito pensar en la gestión de la memoria. Debido al mecanismo de recolección de basura, los objetos en Java ya no tienen el concepto de "alcance". Solo las referencias a objetos tienen "alcance". La recolección de basura puede prevenir eficazmente las pérdidas de memoria y utilizar eficazmente la memoria disponible. El recolector de basura generalmente se ejecuta como un subproceso separado de bajo nivel. En circunstancias impredecibles, borra y recicla los objetos en el montón de memoria que han muerto o no se han utilizado durante mucho tiempo. Los programadores no pueden Llame al recolector de basura en tiempo real para tirarlo a la basura. recoger un objeto o todos los objetos. Los mecanismos de reciclaje incluyen recolección de basura de copias generacionales, recolección de basura marcada y recolección de basura incremental.
4. Por favor, dime los métodos de sincronización de hilos que conoces.
wait(): Pone un hilo en estado de espera y libera el bloqueo del objeto que contiene.
sleep(): pone un hilo en ejecución en estado de suspensión. Es un método estático. Al llamar a este método, es necesario detectar
InterruptedException.
notify(): activa un hilo en estado de espera. Tenga en cuenta que cuando se llama a este método, no activa exactamente un hilo en estado de espera
, sino el. JVM determina qué subproceso activar y no por prioridad.
Allnotity(): activa todos los subprocesos en estado de espera. Tenga en cuenta que no otorga a todos los subprocesos activados un bloqueo de objeto, pero les permite competir
.
5. Hable sobre el uso y las funciones de los destructores y las funciones virtuales.
6. ¿Cuál es la diferencia entre error y excepción?
Error representa errores y excepciones a nivel del sistema que el programa no necesita manejar.
Excepción representa excepciones que el programa debe detectar o manejar.
7. ¿Qué significa cuando una clase se declara como tipo final en Java?
Indica que esta clase no se puede heredar y es una clase de nivel superior.
8. Describe tu estilo de programación más común.
9. ¿Cuál es la diferencia entre montón y pila?
Una pila es una colección lineal, y las operaciones de agregar y eliminar elementos deben completarse en la misma sección. La pila se procesa según el principio de último en entrar, primero en salir.
El montón es un elemento componente de la pila
10 Si el sistema va a utilizar números enteros muy grandes (que exceden el rango de longitud largo), diseñe una estructura de datos para almacenar. números tan grandes y
Diseñar un algoritmo para implementar la suma de enteros muy grandes).
clase pública BigInt()
{
int[] ArrOne = new ArrOne[1000]
String intString="" ;
public int[] Arr(String s)
{
intString = s
for(int i=0; i
{
11. Si desea diseñar un sistema de gráficos, diseñe una implementación simple de componentes gráficos básicos (punto, línea, rectángulo, triángulo)
12. Hable sobre la diferencia entre final, finalmente y finalizar.
Modificador final (palabra clave) Si una clase se declara final, significa que ya no puede derivar nuevas subclases y no se puede utilizar. como clase. La clase principal se hereda. Por lo tanto, una clase no se puede declarar tanto abstracta como final. Declarar variables o métodos como finales garantiza que no se cambiarán. Las variables declaradas como finales deben recibir un valor inicial. declarado y solo se puede leer en referencias posteriores. Los métodos declarados como final también se pueden modificar, pero no se pueden sobrecargar.
¿Proporciona un bloque finalmente para realizar cualquier operación de limpieza? Se lanza una excepción, luego se ejecutará la cláusula
catch correspondiente y luego el control ingresará al bloque finalmente (si existe uno). permite el uso del método finalize() antes de que el recolector de basura borre el objeto de la memoria.
¿Funciona la limpieza necesaria? El recolector de basura llama a este método en este objeto cuando determina que no se hace referencia a él. Se define en la clase Objeto. Todas las clases lo heredan. Las subclases anulan el método finalize() para organizar los recursos del sistema o realizar otros trabajos de limpieza. El método finalize() se llama en el objeto. el recolector de basura lo elimina.
13. ¿Puede la clase interna anónima extender (heredar) otras clases e implementar una interfaz?
Una clase interna anónima es una clase interna sin nombre. .
No se pueden extender (heredar) otras clases, pero una clase interna puede servir como interfaz,
implementada por otra clase interna.
14. Cuanto más pueda saber sobre la diferencia entre la clase anidada estática y la clase interna, mejor (algunas preguntas de la entrevista son muy generales).
Clase anidada (normalmente en términos C), clase interna (normalmente en términos JAVA). La mayor diferencia entre las clases internas de Java y las clases anidadas de C
es si hay referencias al exterior. Específicamente, maToker = new StringTokenizer(source, ",");
String[] result = new String[commaToker.countTokens()]
int i=0; p>
String[] resultado = new String[commaToker.countTokens()];
int i=0
String[] p>
while(commaToker; .hasMoreTokens()){
resultado[i] = commaToker.nextToken();
i
}
devolver resultado; ;
}
Recorre la matriz de cadenas
Integer.parseInt(String s) se convierte en tipo int
Componga una matriz int
Arrays.sort(int[] a),
un orden ascendente de matriz
El orden descendente se puede generar desde el final
2 . Conversión de cantidades, la cantidad en números arábigos se convierte a la forma tradicional china, como:
(¥1011) -gt (mil uno once yuanes) de salida.
3. Las preguntas sobre el orden de ejecución de las clases al heredar suelen ser preguntas de opción múltiple.
Respuesta: Clase principal:
prueba de paquete
clase pública FatherClass
{
public FatherClass()
{
System.out .println("FatherClass Create");
}
}
Subclase:
paquete de prueba
< p; >importar prueba.FatherClass;clase pública ChildClass extiende FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
p>FatherClass fc = nueva FatherClass();
ChildClass cc = nueva ChildClass()
}
}
<; p >Resultados de salida:C:gt;java test.ChildClass
Crear FatherClass
Crear FatherClass
Crear ChildClass
4. ¿Cómo implementar clases internas?
Respuesta: El código de muestra es el siguiente:
paquete de prueba
clase pública OuterClass
p>{
clase privada InterClass
{
interclase pública()
{
System.out.println("Crear entre clases");
}
}
public OuterClass()
{
InterClass ic = new InterClass();
System.out.println("OuterClass Create");
}
public static void main; (String[] args)
{
OuterClass oc = nueva OuterClass()
}
}
<; p>Resultado de salida:C: gt; java test/OuterClass
Crear InterClass
Crear OuterClass
Otro ejemplo: p>
clase pública OuterClass {
privada doble d1 = 1.0
//insertar cod;
e aquí
}
Necesita insertar una declaración de clase interna en la línea 3. ¿Qué dos declaraciones de clase interna
son
válidas? ?(Elija dos.)
A. class InnerOne{
método doble estático público() {return d1;}
}
B. clase pública InnerOne{
método doble estáticoa() {return d1;}
}
clase privada InnerOne{
método doblea() {retorno d1;}
}
D. clase estática InnerOne{
método doble protegido() {retorno d1;}
}
E. clase abstracta InnerOne{
método doble abstracto público();
}
Descripción De la siguiente manera:
1. Las clases internas estáticas pueden tener miembros estáticos, pero las clases internas no estáticas no pueden tener miembros estáticos. Por lo tanto, A y B están equivocados
2. Los miembros no estáticos de clases internas estáticas pueden acceder a variables estáticas de clases externas, pero no pueden acceder a variables no estáticas de clases externas return d1
Error.
Entonces D es incorrecto
3. Los miembros no estáticos de clases internas no estáticas pueden acceder a variables no estáticas de clases externas. Por lo tanto C es correcto
IV. La respuesta es C, E
5. Programación de comunicación Java, preguntas de programación (o preguntas y respuestas), use programación JAVA SOCKET, lea algunos caracteres. desde el servidor y luego escribir en la pantalla local?
Respuesta: Programa del lado del servidor:
prueba de paquete;
importar java.net.*;
importar java.io. * ;
Servidor de clase pública
{
ServidorSocket privado ss
Socket de socket privado
privado; BufferedReader entra;
PrintWriter privado sale
Servidor público()
{
prueba
{
p>
ss=new ServerSocket(10000);
mientras(verdadero)
{
socket = ss.accept ();
Remoción de cadena