Intercambio de preguntas de la entrevista de prueba de Baidu

1. ¿Cuáles son los mecanismos de manejo de excepciones comúnmente utilizados en Java?

Los mecanismos de manejo de excepciones comúnmente utilizados en Java incluyen los siguientes:

1) declaración try-catch-finally : se utiliza para detectar y manejar excepciones. Coloque el código que pueda generar excepciones en un bloque try y luego maneje la excepción en un bloque catch. Independientemente de si ocurre una excepción, se ejecutará el código del bloque finalmente.

try {
    // 可能抛出异常的代码
} catch (ExceptionType1 e) {
    // 处理ExceptionType1类型的异常
} catch (ExceptionType2 e) {
    // 处理ExceptionType2类型的异常
} finally {
    // 无论是否发生异常,都会执行的代码
}

2) throw palabra clave : se utiliza para lanzar excepciones manualmente. Cuando el programa encuentra una determinada situación, puede utilizar la palabra clave throw para lanzar un objeto de excepción.

if (条件) {
    throw new Exception("异常信息");
}

3) palabra clave throws : se utiliza para declarar los tipos de excepciones que puede generar un método. Cuando un método puede generar una excepción pero no la maneja, puede usar la palabra clave throws después de la firma del método para declarar el tipo de excepción y permitir que la persona que llama maneje la excepción.    

public void methodName() throws ExceptionType1, ExceptionType2 {
    // 可能抛出异常的代码
}

4) Clase de excepción personalizada : puede crear una clase de excepción personalizada heredada de Exception o RuntimeException para representar errores o excepciones específicos en el programa.

class CustomException extends Exception {
    public CustomException(String message) {
        super(message);
    }
}

Tutorial para ingenieros de pruebas y desarrollo: el mejor de toda la red en 2023, el jefe de pruebas y desarrollo de Byte te enseñará en el sitio y te enseñará desde cero a convertirte en un ingeniero de pruebas y desarrollo con un salario anual de un millón_bilibili_bilibili https: icono-default.png?t=N7T8/ /www.bilibili.com/video/BV1hX4y187wi/?spm_id_from=333.999.0.0

 

2. Dos subcategorías de excepciones

Las clases de excepción de Java son todas subclases de java.lang.Throwable. Deriva dos subclases: ErrorExcepción . El error indica una excepción que el programa no puede manejar y generalmente no debe lanzarse ni detectarse. Excepción representa las excepciones que el programa puede manejar, incluidas las excepciones marcadas y las excepciones no marcadas. Las excepciones marcadas se refieren a excepciones que el compilador requiere que sean manejadas, como IOException, SQLException, etc. Las excepciones no marcadas se refieren a excepciones que el compilador no está obligado a manejar, como NullPointerException, ArrayIndexOutOfBoundsException, etc.

3. Registros del proyecto ¿En qué niveles se dividen los registros?

En el proyecto, los registros se dividen en cinco niveles: TRACE, DEBUG, INFO, WARN y ERROR. Entre ellos, el registro de nivel TRACE registra la información más detallada, los registros de nivel DEBUG son la información de depuración más detallada, los registros de nivel INFO son información de ejecución general, los registros de registro de nivel WARN son información de advertencia y los registros de registro de nivel ERROR son mensajes de error.

4. ¿Cuál es la diferencia entre iguales y ==?

  • En Java, la diferencia entre == y igual() es la siguiente:
  • == compara si los valores de dos objetos son iguales, mientras que igual () compara si los contenidos señalados por las dos referencias de objetos son iguales.
  • == compara las direcciones de referencia de dos objetos, mientras que equals() compara el contenido de los dos objetos.
  • Si una clase no anula el método igual (), entonces llamar al método igual () es equivalente a llamar al método igual () de su clase principal. Si una clase anula el método igual (), entonces debe determinar si necesita usar el método igual () para comparar dos objetos según la situación específica.

5. Hable brevemente sobre el flujo IO de Java.

Java IO Stream es un modelo de entrada/salida de datos en streaming, que proporciona una forma eficiente de procesar datos de entrada/salida. Los flujos de Java IO se dividen en dos tipos : flujos de bytes flujos de caracteres  . Los flujos de bytes se leen y escriben con bytes como unidad más pequeña, mientras que los flujos de caracteres se leen y escriben con caracteres como unidad más pequeña. La secuencia Java IO contiene muchas clases, como InputStream, OutputStream, Reader, Writer, etc., cada clase tiene su propósito específico. Por ejemplo, FileInputStream y FileOutputStream se utilizan para leer y escribir archivos, mientras que BufferedReader y BufferedWriter pueden almacenar datos en buffer para mejorar la eficiencia de lectura y escritura.

6. Dada una pregunta de escenario para procesar archivos json

7. ¿Qué clases de colección existen en Java?

Las clases de colección en Java son implementaciones de estructuras de datos Java. La clase de colección de Java es una parte importante del paquete java.util, que permite agrupar elementos de varias maneras y define varios métodos para que estos elementos sean más fáciles de manipular. Las clases de colección de Java son la encapsulación y mejora de Java de algunas clases básicas básicas y de uso frecuente y luego las proporcionan en forma de una clase. La clase de colección es una clase que puede almacenar múltiples objetos en ella. Almacena objetos. Las diferentes clases de colección tienen diferentes funciones y características, que son adecuadas para diferentes ocasiones y se utilizan para resolver algunos problemas prácticos.

Las clases de colección más utilizadas incluyen Lista, Conjunto, Mapa, etc. Entre ellos, List es una colección ordenada y repetible, Set es una colección desordenada y no repetible y Map es una colección en forma de pares clave-valor.

8. ¿Cuál es seguro para subprocesos y cuál no es seguro para subprocesos?

Las clases de colección en Java se dividen en seguras para subprocesos e inseguras. La seguridad de subprocesos significa que en un entorno de subprocesos múltiples, la clase de colección se comporta como se espera sin problemas como pérdida o errores de datos. Las clases de recopilación inseguras pueden causar problemas como pérdida de datos y errores de datos en un entorno de subprocesos múltiples.

Las clases de colección seguras para subprocesos de uso común incluyen Vector, HashTable, Propiedades, etc., mientras que las clases de colección no seguras para subprocesos de uso común incluyen ArrayList, LinkedList, HashSet, TreeSet, HashMap, TreeMap, etc.

9. ¿Cuáles son las funciones del grupo de subprocesos?

El grupo de subprocesos es una tecnología de agrupación, similar al grupo de conexiones de bases de datos, el grupo de conexiones HTTP, etc. La idea de la agrupación es principalmente reducir el consumo de cada adquisición y terminación de recursos y mejorar la utilización de los recursos. Por ejemplo, en algunas áreas remotas donde es inconveniente ir a buscar agua, la gente la va a buscar de vez en cuando y la almacena en la piscina, para poder obtenerla directamente cuando la use. Lo mismo ocurre con los grupos de subprocesos: precisamente porque cada creación y destrucción de subprocesos consume demasiados recursos del sistema, construimos un grupo de este tipo para administrar los subprocesos de manera unificada. Sácalo de la piscina cuando lo uses, vuelve a ponerlo cuando no lo uses y no tendrás que destruirlo, ¿no es mucho más cómodo?  

Las funciones principales del grupo de subprocesos son las siguientes:   

  • Evite los problemas de desbordamiento de memoria causados ​​por la creación de demasiados subprocesos.
  • Reducir el consumo de recursos.
  • Reutilice subprocesos, administre cómodamente subprocesos y tareas y desacople la creación de subprocesos y la ejecución de tareas.
  • Controle la cantidad de subprocesos que se ejecutan simultáneamente para evitar el uso excesivo de recursos del sistema o incluso fallas debido a demasiados subprocesos.

10. ¿El mecanismo de recolección de basura de Java gc?

11. Pregunta del escenario MySQL: verifique el número total de estudiantes en una tabla de estudiantes, verifique los estudiantes llamados Zhang en la tabla de estudiantes y verifique el estudiante con la puntuación más alta.

1) Verifique el número total de estudiantes en una tabla de estudiantes:

SELECT COUNT(*) FROM 学生表;

2) Consulta la lista de estudiantes con el apellido Zhang:

SELECT * FROM 学生表 WHERE 姓名 LIKE '张%';

3) Marque el estudiante con mayor puntaje:

SELECT * FROM 学生表 WHERE 成绩 = (SELECT MAX(成绩) FROM 学生表);

12. ¿Cuáles son los comandos más utilizados en Linux? (Dije vim aquí)

Vim es un potente editor de texto que se ejecuta en la terminal y tiene funciones ricas y teclas de acceso directo. Aquí hay algunos comandos comunes de Vim:

1) Abra el archivo y guárdelo:

  • Abrir archivo: `nombre de archivo vim`
  • Guarde el archivo: en modo normal, escriba `:w` y presione Enter
  • Guardar y salir: en modo normal, escriba `:wq` y presione Enter
  • Salir sin guardar: En modo normal, escriba `:q!` y presione Enter

2) Modo normal:

Ingrese al modo normal: presione la tecla `Esc`.
Mover el cursor: use las teclas de flecha o las siguientes teclas de método abreviado:

  • `h`: desplazamiento a la izquierda
  • `j`: bajar
  • `k`: subir
  • `l`: desplazamiento a la derecha

Eliminar caracteres:

  • `x`: elimina el carácter debajo del cursor

copiar y pegar:

  • `yy`: copia la línea actual
  • `p`: pegar

Deshacer y rehacer:

  • `u`: Deshacer
  • `Ctrl + r`: rehacer

3) Modo de inserción:

Ingrese al modo de inserción:

  • `i`: insertar antes del cursor
  • `a`: Insertar después del cursor
  • `I`: Insertar, al principio de la línea actual
  • `A`: Insertar al final de la línea actual

Salir del modo de inserción: presione la tecla `Esc`

4) Modo visual:
Ingrese al modo visual:

  • `v`: Seleccionar texto por carácter
  • `V`: Selecciona texto línea por línea
  • Copiar texto seleccionado: Presione `y`
  • Cortar el texto seleccionado: Presione `x` o `d`
  • Pegar: Presione `p` en modo normal

5) Buscar y reemplazar:

  • Buscar: en modo normal, ingrese `/`, luego ingrese el texto que desea buscar y presione Enter. Puede utilizar `n` y `N` para explorar los resultados de la búsqueda.
  • Reemplazar: en modo normal, ingrese `:%s/texto a reemplazar/texto a reemplazar/g` para reemplazar los elementos coincidentes en el texto completo.

6) Saltar y deshacer:

  • Saltar al número de línea: en modo normal, ingrese `:`, luego ingrese el número de línea y presione Enter.
  • Deshacer: en modo normal, ingrese `u`.

7) Guardar y salir:

  • Guarde el archivo: en modo normal, escriba `:w` y presione Enter.
  • Guardar y salir: en modo normal, escriba `:wq` y presione Enter.
  • Salir sin guardar: En modo normal, escriba `:q!` y presione Enter.

13. ¿Cómo usar vim para reemplazar todas las pruebas en un archivo con dev?

:%s/test/dev/g

14. ¿Cómo ver los diez últimos archivos modificados (use ls para verlos)?

ls -lt | head -n 10

Lo que hace este comando es:

ls -lt: enumera los archivos y subdirectorios en el directorio actual, ordenados por hora de modificación, del más nuevo al más antiguo.

  • l: muestra información del archivo en formato largo, incluidos permisos de archivo, propietario, tamaño, hora de modificación, etc.
  • t: Ordenar por hora de modificación.

head -n 10: toma las primeras 10 líneas de la lista de archivos ordenados, es decir, muestra los diez últimos archivos modificados.

De esta manera, podrá ver una lista de los diez archivos modificados más recientemente, que se mostrarán en el terminal en orden desde el momento de modificación más reciente hasta el más antiguo. Si desea ver una cantidad diferente de archivos, simplemente cambie el número en el comando principal.

Por ejemplo, si desea ver los cinco archivos modificados más recientemente, puede usar head -n 5.

15. ¿Cómo comprobar cuánto espacio en disco ocupa el directorio actual?

du -sh .

Lo que hace este comando es:

  • du: Indica el cálculo del uso del disco.
  • s: Indica resultados resumidos, mostrando solo el tamaño total del directorio y no el tamaño de los subdirectorios.
  • h: muestra el tamaño del archivo en formato legible por humanos, expresado en unidades K, M, G, etc.
  • .: Indica el directorio actual.

16. ¿Cómo comprobar cuánta memoria ocupa el proceso actual?

ps aux

Si desea ver el uso de memoria de un proceso específico, puede usar el comando grep para filtrar la información relevante. Suponiendo que conoce el nombre del proceso que está buscando, como miproceso, puede utilizar un comando como este:

ps aux | grep myprocess

17. ¿Entiendes top? ¿Puedes usar top para ver cuánta memoria está ocupada?

De forma predeterminada, la parte superior muestra todos los procesos en ejecución, ordenados por uso de CPU. Puede presionar Shift+M para ordenar por uso de memoria y ver los procesos que utilizan la mayor cantidad de memoria en la parte superior de la lista.

top actualizará la lista de procesos y el uso de recursos en tiempo real. Puede ver el PID (identificador de proceso), el uso de memoria (columna RES), el uso de memoria (columna% MEM) y otra información de cada proceso en la lista.

Para salir de la parte superior, presione la tecla q.

18. Una vez que conoce el número de puerto, ¿cómo verifica el pid?

netstat -tuln | grep 端口号
sudo lsof -i :端口号

19. comando awk comando grep

 Tutorial para ingenieros de pruebas y desarrollo: el mejor de toda la red en 2023, el jefe de pruebas y desarrollo de Byte te enseñará en el sitio y te enseñará desde cero a convertirte en un ingeniero de pruebas y desarrollo con un salario anual de un millón_bilibili_bilibili https: icono-default.png?t=N7T8/ /www.bilibili.com/video/BV1hX4y187wi/?spm_id_from=333.999.0.0

20. Tiene un archivo de registro. ¿Cómo puede ver si el archivo de registro contiene información de error?

grep "error" 文件名

21. ¿Qué es una pérdida de memoria?

Una pérdida de memoria del servidor ocurre cuando una aplicación del servidor continúa asignando memoria sin liberarla mientras se ejecuta, lo que hace que el uso de la memoria del servidor aumente gradualmente y, eventualmente, puede agotar la memoria disponible, lo que provoca una degradación o falla del rendimiento del servidor. Las pérdidas de memoria son un problema de software común que generalmente requiere un diagnóstico y reparación cuidadosos.

22. ¿Qué sabes sobre los servidores?

"Servidor" generalmente se refiere a hardware o software en una red informática que proporciona servicios, recursos o datos a otras computadoras o dispositivos para satisfacer las solicitudes de los clientes. Los servidores desempeñan un papel importante en la red y se utilizan para diversos fines, como almacenar y administrar datos, proporcionar servicios de red, alojar sitios web y soportar aplicaciones.

A continuación se muestran algunos conceptos comunes sobre servidores:

  • Servidor de hardware: se refiere a un servidor físico, generalmente una computadora dedicada, que se utiliza para ejecutar software de servidor y brindar diversos servicios. Los servidores de hardware pueden tener diferentes formas, como servidores en rack, servidores en torre, servidores blade, etc.
  • Servidor virtual: un servidor virtual es una instancia virtual creada en un servidor físico mediante tecnología de virtualización. Un único servidor físico puede albergar varios servidores virtuales, cada uno de los cuales puede ejecutar sistemas operativos y aplicaciones independientes.
  • Software de servidor: el software de servidor es una aplicación instalada en el hardware del servidor para proporcionar diversos servicios, como servicios de red, servicios de bases de datos, intercambio de archivos, etc. Los sistemas operativos de servidor comunes incluyen Linux, Windows Server, etc.
  • Servidor web: un servidor web es un tipo especial de servidor que se utiliza para alojar sitios web y ofrecer contenido web a los navegadores de los clientes. Los servidores web comunes incluyen Apache, Nginx, IIS, etc.
  • Servidor de base de datos: un servidor de base de datos es un servidor que se utiliza para almacenar y administrar una base de datos, permitiendo que las aplicaciones cliente accedan y manipulen los datos de la base de datos. Los servidores de bases de datos comunes incluyen MySQL, PostgreSQL, Oracle, etc.
  • Servidor de aplicaciones: un servidor de aplicaciones es un servidor que se utiliza para alojar y ejecutar aplicaciones, normalmente para admitir la lógica empresarial y el procesamiento back-end de una aplicación. Los servidores de aplicaciones Java como Tomcat, WebLogic y servidores de aplicaciones como Node.js son ejemplos comunes.
  • Servidor de archivos: un servidor de archivos es un servidor que se utiliza para almacenar y compartir archivos, lo que permite que varios usuarios accedan y compartan archivos y recursos almacenados en el servidor.
  • Servidor en la nube: los servidores en la nube son instancias de servidores virtuales que se ejecutan en una plataforma de computación en la nube y, por lo general, están alojados y administrados por un proveedor de servicios en la nube. Los usuarios pueden crear, configurar y ampliar servidores en la nube según sea necesario.

Los servidores desempeñan un papel clave en las aplicaciones empresariales y de Internet, proporcionando recursos y servicios confiables que permiten a los usuarios acceder y compartir información. Pueden ser físicos o virtuales, con una arquitectura y configuración de servidor adecuadas elegidas en función de las diferentes necesidades y escalas.

23. ¿Cómo implementar el servicio mysql en el servidor?

Tenga confianza en Baidu, hay muchos artículos como este.

24. ¿Para qué se utilizan los comandos SSH?

SSH (Secure Shell) es un protocolo de red y una tecnología de cifrado que se utiliza para acceder y administrar de forma remota y segura los sistemas informáticos. Los principales usos de SSH incluyen los siguientes aspectos:

Inicio de sesión remoto : SSH permite a los usuarios iniciar sesión de forma segura en un sistema informático remoto desde su computadora local. Esto se logra cifrando las comunicaciones para que los datos confidenciales, como nombres de usuarios y contraseñas, estén protegidos durante la transmisión. El inicio de sesión remoto SSH se usa comúnmente para la administración de servidores remotos, dispositivos de red e instancias de computación en la nube.

Transferencia de archivos : SSH se puede utilizar para transferir archivos de forma segura, incluida la carga y descarga de archivos. Un caso de uso común es utilizar el comando scp (Protocolo de copia segura), que se basa en SSH y se utiliza para copiar archivos entre la computadora local y un servidor remoto.

Por ejemplo, copie archivos del servidor local al remoto:

scp 文件名 用户名@远程服务器IP:目标路径

Copie archivos del servidor remoto al local

scp 用户名@远程服务器IP:远程文件路径 本地目标路径

Ejecución remota de comandos: SSH permite a los usuarios ejecutar comandos en una computadora remota sin iniciar sesión directamente en el sistema remoto. Esto es útil para tareas de automatización y procesamiento por lotes. Utilice el comando ssh para ejecutar comandos en el sistema remoto, por ejemplo:

ssh 用户名@远程服务器IP "远程命令"

Reenvío de puertos : SSH admite el reenvío de puertos, lo que permite a los usuarios transmitir tráfico en un túnel de comunicación seguro. Esto es útil para proteger servicios confidenciales y acceder a recursos restringidos. SSH puede realizar el reenvío de puertos locales y el reenvío de puertos remotos.

Comunicaciones cifradas : SSH utiliza tecnología de cifrado para proteger la confidencialidad y la integridad de las comunicaciones. Esto dificulta que los piratas informáticos puedan espiar o alterar las transmisiones de datos. SSH normalmente utiliza un par de claves públicas y privadas para la autenticación para garantizar que solo los usuarios autorizados puedan acceder al sistema.

En resumen, SSH es un protocolo de administración remota seguro que se utiliza para tareas como inicio de sesión remoto, transferencia de archivos y ejecución remota de comandos. Desempeña un papel importante en la administración de redes y sistemas, especialmente en la protección de datos confidenciales y la seguridad del sistema.

25. Dime ¿cómo subir proyectos a git y cómo resolver conflictos?

Para cargar un proyecto en Git y resolver conflictos, normalmente se requieren los siguientes pasos. En este ejemplo, supongamos que ha creado un repositorio Git en su computadora local y desea enviarlo al repositorio remoto, y puede encontrar conflictos al realizar la transferencia.

Pasos para cargar el proyecto en Git (enviarlo al repositorio remoto):

1)  Inicialice el repositorio : si su proyecto no se ha inicializado como un repositorio Git, ejecute el siguiente comando:

git init

2)  Agregar archivos : agregue los archivos del proyecto al área de preparación del almacén de Git:

git add .

Esto agregará todos los cambios al área de preparación. Si solo desea agregar un archivo específico, puede usar git add filename.

3)  Enviar cambios : envíe los cambios en el área de preparación al almacén local y agregue un mensaje de confirmación:

git commit -m "提交消息"

4)  Conéctese al almacén remoto : asocie el almacén local con el almacén remoto y agregue la dirección del almacén remoto:

git remote add origin 远程仓库地址

Por ejemplo:

git remote add origin https://github.com/你的用户名/你的仓库.git

5) Enviar al almacén remoto : enviar cambios desde el almacén local al almacén remoto:

git push -u origin 主分支名称

Por ejemplo:

git push -u origin main

Esto cargará el proyecto en el repositorio remoto. La opción -u se utiliza para asociar la rama maestra local con la rama maestra remota para futuras transferencias y extracciones.

Pasos para resolver conflictos:

Si encuentra conflictos al impulsar su proyecto, generalmente se debe a que los cambios en el repositorio remoto entran en conflicto con sus cambios locales. Los pasos para resolver conflictos son los siguientes:

①  Obtenga los últimos cambios : antes de resolver conflictos, primero extraiga los últimos cambios del almacén remoto:

git pull origin 主分支名称

Por ejemplo

git pull origin main

Esto fusionará los cambios del repositorio remoto localmente.

②Resolver  conflictos : abra un archivo que contenga conflictos y normalmente verá que las partes en conflicto están envueltas en etiquetas similares a las siguientes:


<<<<<<< cambios locales HEAD 
======= 
cambios remotos 
>>>>>>> nombre remoto/sucursal

Deberá editar manualmente el archivo, manteniendo los cambios que desee y eliminando las partes que no. Después de resolver el conflicto, guarde el archivo.

③  Marcar como resuelto : una vez que se resuelva el conflicto, use el siguiente comando para marcar el archivo como resuelto:

git add 文件名

Confirmar cambios: confirmar cambios después de la resolución del conflicto

git commit -m "解决冲突"

④Enviar  cambios : envíe los cambios después de la resolución del conflicto al almacén remoto:

git push origin 主分支名称

Por ejemplo:

git push origin main

 Tutorial para ingenieros de pruebas y desarrollo: el mejor de toda la red en 2023, el jefe de pruebas y desarrollo de Byte te enseñará en el sitio y te enseñará desde cero a convertirte en un ingeniero de pruebas y desarrollo con un salario anual de un millón_bilibili_bilibili https: icono-default.png?t=N7T8/ /www.bilibili.com/video/BV1hX4y187wi/?spm_id_from=333.999.0.0

 

Supongo que te gusta

Origin blog.csdn.net/MXB_1220/article/details/132879919
Recomendado
Clasificación