Código fuente de la entrevista de Redis
1. Sugerencias para la entrevista
Parte técnica
1) Para la parte del algoritmo, simplemente cepille LeetCode. Este es un proceso a largo plazo y a corto plazo. Los ataques no tienen ningún efecto porque hay demasiadas preguntas.
2) Fundamentos del lenguaje, subdivididos en: fundamentos y principios de golang, que es el contenido principal de este artículo; fundamentos y principios de Mysql; comandos comunes de Redis Linux, como scripts de sincronización, varios parámetros; ¿Qué significa? Los permisos de los archivos deben ser claros y los comandos de uso de la memoria de proceso; las pequeñas empresas necesitan tener algunos conocimientos de front-end porque quieren que usted lo sepa todo.
Se recomienda revisar el banco de preguntas de Golong. El resumen es muy bueno y la calidad de las preguntas también es muy alta, lo cual es conveniente para consolidar la base gramatical. También puede ir al banco de preguntas de la entrevista inicial, que está lleno de preguntas y respuestas, lo que le permite comprender el conocimiento inicial de manera fácil y rápida.
3) Experiencia en proyectos, puede crear un marco web basado en el servicio de interfaz back-end de gin y, en general, se le preguntará cómo implementarlo y los microservicios;
Parte no técnica
1) RR.HH. también puede preparar completamente respuestas a las preguntas que puedan surgir. No significa que no puedas responder, pero hará que tu expresión sea más fluida. En segundo lugar, también demuestra que estás preparado. Sufrí una pérdida durante una entrevista con cierta empresa y pasé la prueba técnica. RR.HH. dijo que mis habilidades expresivas no eran buenas (también compartiré esta plantilla más adelante, gracias a que mi esposa fue la entrevistadora y me guió sobre cómo responder preguntas de RR.HH. con alta inteligencia emocional).
2) Puedes grabar las respuestas de tu entrevista para ver tu tono, volumen y fluidez. Si usted no se siente cómodo escuchando, el entrevistador probablemente tampoco se sentirá cómodo.
¿Cuál es la diferencia entre 1 y make y new en golang? (Pregunta básica)
* * *Mismo punto: asignar memoria a las variables.
Diferencias:
1) Los tipos de variables son diferentes. new asigna memoria para cadenas, int y matrices, y make asigna memoria para sectores, mapas y canales.
2) Los tipos de devolución son diferentes. new devuelve un puntero a la variable, make devuelve la variable misma.
3) Limpiar el espacio asignado por 3) nuevo. Después de que make asigne espacio, se inicializará.
2. La diferencia entre arrays y cortes (básicamente, debes preguntar)
Similitudes:
1) Sólo un conjunto de estructuras de datos del mismo tipo. se puede almacenar.
2) Se accede a todos a través de subíndices y tienen una longitud de capacidad. La longitud se obtiene a través de len y la capacidad se obtiene a través de cap.
Diferencias:
1) Las matrices tienen una longitud fija, el acceso y la copia no pueden exceder la longitud definida por la matriz; de lo contrario, el subíndice excederá el límite y la longitud y capacidad del segmento se puede ampliar automáticamente.
2) Las matrices son tipos de valores, los sectores son tipos de referencia y cada sector se refiere a una matriz subyacente. El segmento en sí no puede almacenar ningún dato, pero la matriz subyacente almacena los datos, por lo que cuando se modifica el segmento, los datos en la matriz subyacente también se modifican. Una vez que el segmento se extiende y apunta a la nueva matriz subyacente, la dirección de memoria cambiará en consecuencia.
Respuesta concisa:
1) Las definiciones son diferentes.
2) Los métodos de inicialización son diferentes. Es necesario especificar el tamaño de la matriz y el tamaño no cambiará. 3) En la transferencia de funciones, todos los sectores de la matriz se pasan por valor.
3. ¿Cambiará su dirección debido al rango?
A: En fora, b:=rangec recorrido, A y B solo existirán una vez en la memoria, es decir, los datos recorridos en cada bucle se asignarán a A y B mediante la sobrescritura de valores. Las direcciones de memoria de A y B permanecen sin cambios. Debido a esta característica, si abre un contrato en un bucle for, no pase directamente la dirección de A o B al contrato.
Solución: Crear una variable temporal en cada bucle.
4. Goldfort, la secuencia de múltiples ampliaciones.
¿Cuándo modifica un retraso el valor de retorno?
Función: Función de retraso, liberación de recursos y finalización del trabajo. Los ejemplos incluyen liberar bloqueos, cerrar archivos y cerrar enlaces. Captar el pánico.
Guía para evitar errores: la función de aplazamiento se abre inmediatamente después del recurso; de lo contrario, es posible que el aplazamiento no se ejecute, lo que provoca pérdidas de memoria.
El orden de varias llamadas de aplazamiento es LIFO (último en entrar, primero en salir). La operación después de aplazar puede entenderse como empujar aplazar, devolver y devolver valor (valor de retorno de la función) a la pila.
Orden de ejecución: devolver primero, luego devolver valor y finalmente aplazar. Aplazar puede modificar el valor de retorno final de una función.
Tiempo de modificación: valor de retorno con nombre o puntero de retorno de función.
5. ¿Puedes presentarnos los tipos de runas?
La implementación subyacente de cadenas en golang se implementa a través de matrices de bytes. Los caracteres chinos ocupan 2 bytes en Unicode y 3 bytes en la codificación utf-8. La codificación predeterminada de golang es utf-8.
Byte equivale a int8 y se utiliza a menudo para procesar caracteres ascii.
Rune es equivalente a int32 y generalmente se usa para manejar caracteres unicode o utf-8.