¿Qué preguntas suelen hacer los entrevistadores en las entrevistas de graduación en informática?

1. ¿Cuánto tiempo lleva obtener elementos de una tabla hash, un árbol binario o una lista vinculada? ¿Qué pasa si tienes millones de registros?

Las tablas hash requieren O(1) tiempo, los árboles binarios requieren O(logN) (N es el número de nodos en el árbol) y las listas enlazadas requieren O (n es el número de nodos en el árbol enlazado). lista). Si la estructura de datos funciona correctamente (por ejemplo, una tabla hash tiene relativamente pocos conflictos o ningún conflicto, un árbol binario está equilibrado), millones de registros no afectarán la eficiencia. Si no funciona correctamente, la eficiencia disminuirá a medida que aumente el número de registros.

2. ¿Cuál es la diferencia entre reescribir y sobrecargar? ?

La reescritura se determina en tiempo de ejecución y la sobrecarga se determina en tiempo de compilación. Los mecanismos de sobrescritura y sobrecarga son diferentes. Por ejemplo, en Java, la firma de un método sobrecargado debe ser diferente de la firma del método original, pero para poder anularlo, debe ser la misma.

3. ¿Cuál es la diferencia entre el proceso de bifurcación y el hilo de generación?

Cuando bifurcas un proceso, el nuevo proceso ejecuta el mismo código que el proceso principal, pero en un espacio de memoria diferente. Pero cuando generas un hilo en un proceso existente, genera una nueva ruta de ejecución de código, pero * * * comparte el mismo espacio de memoria.

4. ¿Qué es una sección crítica? ?

La sección crítica es una sección de código que es muy importante y solo puede ser ejecutada por un subproceso al mismo tiempo en subprocesos múltiples. Puede utilizar semáforos o mutex para proteger secciones críticas. En Java, las secciones críticas se pueden proteger utilizando la palabra clave sincronizada o ReentrantLock.

5. ¿Cuál es la diferencia entre tipos de valor y tipos de referencia? ?

Los tipos de valores están más optimizados y siempre son inmutables, como el int, long, double y float original de Java. Un tipo de referencia apunta a un objeto, que puede ser mutable o inmutable. También se puede decir que un tipo de valor apunta a un valor y un tipo de referencia apunta a un objeto.

6. ¿Qué son el montón y la pila en el proceso?

En un mismo proceso existen dos áreas de memoria diferentes. En Java, la pila se utiliza para almacenar valores primitivos y tipos de referencia que apuntan a objetos, pero los objetos en sí siempre se crean en la pila. Una diferencia importante entre el montón y la pila es que todos los subprocesos comparten la memoria del montón, pero cada subproceso tiene su propia pila.

7. ¿Qué es el control de versiones?

El control de versiones es un software que se utiliza para almacenar código y administrar versiones base de código, como SVN, CVS, Git, Perforce y ClearCase. Son muy eficientes para comparar código, revisar código y crear código de versiones estables anteriores. Todos los desarrolladores profesionales utilizan alguna herramienta de control de versiones; de lo contrario, no podrá administrar su código de manera efectiva, especialmente si hay 20 desarrolladores trabajando en la misma base de código. Las herramientas de control de versiones desempeñan un papel muy importante a la hora de mantener la coherencia del código base y gestionar los conflictos de código.

8. ¿Qué es un lenguaje de programación fuertemente tipado?

En lenguajes fuertemente tipados, el compilador garantiza la exactitud de los tipos; por ejemplo, no se pueden almacenar números en un tipo de cadena y viceversa. Java es un lenguaje fuertemente tipado, por lo que existen varios tipos de datos (como int, float, String, char, boolean, etc.). Solo puede almacenar valores compatibles en el tipo correspondiente.

Por el contrario, los lenguajes débilmente tipados no requieren verificación de tipos en tiempo de compilación y manejan valores basados ​​en el contexto. Python y Perl son dos ejemplos comunes de lenguajes de programación débilmente tipados. Puede guardar una cadena de números como un tipo de número.