Reclutamiento escolar 2021 convencido de algunas preguntas de prueba escritas (resumen de los enlaces más completos a puntos de conocimiento)

Verificar las omisiones y llenar las vacantes es un resumen del conocimiento de otras personas.

1. Cadena y StringBuffer y StringBuilder

Problemas para crear objetos

El texto original de las siguientes tres oraciones
(1) Ahora, cuando alguien le pregunta a String str = new String("abc"); para crear varios objetos, hay un campo abc en el grupo de constantes y dos en el grupo de constantes sin " campo abc".
(2) String str="abc"; Crear varios objetos (0 si ya hay objetos en el conjunto de constantes, 1 si no); (3)
new String("abc").intern(); Se crean varios objetos ( uno si el objeto de cadena ya existe en el grupo constante, dos si no)
String str = new String ("abc") en Java crea varios objetos

StringBuilder 的 toString()

Tenga en cuenta que se devuelve un nuevo objeto String nuevo

 @Override
    public String toString() {
    
    
        // Create a copy, don't share the array
        return new String(value, 0, count);
    }

método interno()

¡Es transparente!
El método interno() devuelve una representación canónica de un objeto de cadena.

String.intern() es un método nativo, su función es:
si el grupo de constantes de caracteres ya contiene una cadena igual a este objeto String, devuelve la referencia de la cadena en el grupo de constantes; de lo contrario, coloca la nueva cadena en el grupo de constantes, y devuelve una referencia al nuevo objeto de cadena

El método intern() de String se puede usar para expandir el grupo de constantes.

2. Conjunto de constantes de cadena, conjunto de constantes de clase, conjunto de constantes de tiempo de ejecución

Conjunto de constantes de cadena, conjunto de constantes de clase, conjunto de constantes de tiempo de ejecución

3. Hilo Local

Cada entrada de ThreadLocalMap es una referencia débil a la clave y cada entrada contiene una referencia fuerte al valor.

1. Hay un mapa en Thread, que es ThreadLocalMap

2. La clave de ThreadLocalMap es ThreadLocal y el valor lo establecemos nosotros mismos.

3. ThreadLocal es una referencia débil. Cuando es nulo, será recolectado como basura

4. El punto importante es que de repente nuestro ThreadLocal es nulo, es decir será reciclado por el recolector de basura, pero en este momento nuestro ciclo de vida ThreadLocalMap es el mismo que el de Thread, no será reciclado, y un fenómeno aparece en este momento. Es decir, la clave de ThreadLocalMap se ha ido, pero el valor sigue ahí, lo que provoca una pérdida de memoria.

Solución: después de usar ThreadLocal, ejecute la operación de eliminación para evitar el desbordamiento de la memoria.

Todo el sitio habla de ThreadLocal, incluida una breve introducción a los cuatro tipos de referencias.
(Para entender, siento que lo que dijo es muy engañoso, y algunos lugares no son lo suficientemente precisos)

Interpretación de ThreadLocal en detalle

Personalmente, creo que este es el mejor.

Función:
1. Al transferir objetos a través de capas, el uso de ThreadLocal puede evitar múltiples transferencias y romper las restricciones entre capas.

2. Aislamiento de datos entre hilos, es decir, no se puede utilizar para recursos compartidos entre hilos, sino que solo se puede compartir entre métodos de un mismo hilo.

3. Realizar operaciones de transacción para almacenar información de transacciones de subprocesos.

4. Conexión a la base de datos:

5. Gestión de sesiones de sesión.

4. Clases atómicas

Tipo básico de actualización atómica
addAndGet(int delta): agregue atómicamente el valor de entrada al valor original en la instancia y devuelva el resultado final;
incrementAndGet(): agregue atómicamente 1 al valor original en la instancia y devuelva el valor agregado final Resultado;
getAndSet(int newValue): actualice el valor en el instancia a un valor nuevo y devolver el valor anterior;:
getAndIncrement()agregue 1 al valor original en la instancia de forma atómica y devuelva el valor anterior antes del autoincremento;
la clase atómica actualiza varios tipos de datos

Una buena publicación de blog sobre clases atómicas.

5. Intercambio de subprocesos JVM, aislamiento de subprocesos

En la máquina virtual JAVA, hay un área de datos de tiempo de ejecución, que incluye
el uso compartido de subprocesos : montón,
aislamiento de subprocesos del área de método : contador de programa, pila de máquina virtual Java y pila de método local.

6. El número más reciente

Dado nums[]. Devuelve una nueva matriz arr[].
arr[i] satisface x < i & nums[x] < nums[i] && y > i & nums[y] > nums[i] , arr[i ] = nums[y] - nums[x].x
, y es el más cercano a i.

Este es más o menos el caso.

7. Combinar direcciones IPV4

Dada una ArrayList, que almacena la dirección IP. Contiene una sola dirección IP o un rango de direcciones IP.
Si las direcciones IP son consecutivas, se fusionan en un rango. Si la dirección IP está incluida en un determinado rango de IP, se fusionará en este rango y
se devolverá el orden ascendente de las direcciones IP.

Supongo que te gusta

Origin blog.csdn.net/qq_43709785/article/details/120032645
Recomendado
Clasificación