Las 50 preguntas y respuestas más importantes de la entrevista de programación
Las compañías de software siempre están buscando buenos talentos de programación, y las entrevistas telefónicas y en línea a menudo deciden su destino en solo unos minutos.
Un buen programador debe ser lo más versátil posible, desde la comprensión de sistemas hasta la programación general, diferentes conceptos y tecnologías, además de estar actualizado.
La siguiente es una lista de las 50 preguntas principales de la entrevista de programación y su respuesta. Arrojan una luz sobre los variados conceptos que todo principiante debe saber para sobresalir.
1. ¿Qué es la programación informática?
La programación informática es el proceso de codificación de procesos lógicos para ser ejecutados por una computadora. Esto se logra mediante el uso de un lenguaje informático que contiene las instrucciones necesarias.
El proceso se puede dividir en diseño, codificación, depuración y actualización.
2. ¿Qué es la depuración?
La depuración es el proceso de descubrir y eliminar errores en la fuente de software de un programa de computadora. Hay muchos métodos para hacer esto, pero la mayoría de los entornos de desarrollo vienen con un depurador integrado para facilitar las cosas.
3. ¿Qué es un compilador?
Un compilador es un programa de software que toma el programa escrito y lo convierte en un código de máquina que una computadora puede entender.
Sin embargo, un paquete compilador típico se compone de un preprocesador, el compilador principal que convierte el lenguaje informático en código ensamblador y un ensamblador.
4. ¿Qué es un preprocesador?
Un preprocesador es un programa que analiza el código informático escrito para encontrar y satisfacer sus dependencias, como las bibliotecas necesarias.
Después de que el preprocesador se asegure de que todo, incluido el entorno de ejecución, está bien, un compilador puede convertir el código en código ensamblador.
5. ¿Qué es un ensamblador?
Un ensamblador es un programa que toma el nivel más bajo de código de computadora legible por humanos llamado lenguaje ensamblador y lo convierte en el código de máquina con el que una computadora puede trabajar.
El lenguaje ensamblador generalmente lo genera un compilador, aunque también se puede codificar directamente. Un programa ensamblador puede incluir código como:
MOVIMIENTO AH, 02H
pero cuando lo compila en código de máquina, solo obtiene ceros y unos (por ejemplo, 0110011110101010).
6. ¿Cómo se ejecuta un programa?
Primero, el sistema operativo carga el programa especificado desde el almacenamiento del disco duro a la memoria del sistema (RAM) y luego permite que se ejecute dirigiendo a la CPU para que continúe su ejecución desde la primera dirección de memoria del programa. La CPU ejecuta cualquier comando que ve, luego pasa al siguiente, a menudo repitiendo este procedimiento millones de veces por segundo.
Las CPU de 32 bits ejecutan instrucciones de 32 bits (4 bytes, palabra doble) de una sola vez, mientras que las CPU de 64 bits ejecutan instrucciones de 64 bits (8 bytes, palabra cuádruple) de una sola vez. Estas instrucciones están integradas en la CPU y es el ensamblador el que convierte el código de programación en números binarios que representan las direcciones de comando nativas de la CPU.
7. Defina un Subrutina
Una subrutina es una secuencia de instrucciones en un programa que se puede llamar y ejecutar en cualquier momento. En otras palabras, una subrutina puede ser una función, un método o un procedimiento utilizado para implementar tareas específicas, como enviar un email, abrir un archivo o forzar una página de inicio de sesión por fuerza bruta.
8. Definir Codigo de maquina
El código de máquina es una secuencia de números binarios que contiene instrucciones de ejecución de un microprocesador específico y sus direcciones de memoria asociadas.
El código de máquina tradicionalmente es generado por un ensamblador que está diseñado para esa familia particular de microprocesadores.
9. Explique Lenguajes compilados vs interpretados
Un lenguaje informático compilado debe convertirse en código de máquina antes de ejecutarse en una computadora, mientras que un lenguaje interpretado no necesita una compilación previa.
Cuando ejecuta un programa interpretado, primero lo procesa un intérprete, que luego lo compila y lo ejecuta sobre la marcha. Estos pasos adicionales hacen que los lenguajes interpretados como Python sean más lentos que los lenguajes compilados como C.
10. ¿Qué es un bucle?
Un bucle es una estructura de código que puede repetir declaraciones específicas hasta que se logre un criterio específico. Este criterio puede incluir un número fijo de repeticiones o el cambio de una variable definida.
11. Enumera los tipos populares de bucles
Diferentes lenguajes informáticos interpretarán los bucles de diferentes maneras. Sin embargo, los tipos populares de bucles de la familia C incluyen:
- Bucle while() – permite la ejecución de código específico, siempre que sea un valor booleano while () se cumple la condición.
Por ejemplo: mientras (2> 1) {imprimir ("¡yahoo!")};. - En bucle – contiene tres expresiones (inicialización; evaluación; actualizar) que definen las condiciones a probar, así como un método flexible para incrementar el conteo. También ejecutará código al menos una vez.
- Bucle Do{} While() – este tipo de bucle ejecuta el hacer{} código al menos una vez antes de determinar si el while () la condición sigue siendo cierta.
12. Explicar iteración vs. La recursividad
Una iteración es el uso de un bucle para ejecutar los mismos pasos de código, mientras que la recursividad es el proceso de una función que se llama a sí misma una y otra vez. Sin embargo, el problema con la recursividad es que solo puede llegar a cierta profundidad hasta que se encuentre con problemas de memoria.
13. Explique los trabajos de romper y continuar en un bucle
A break finaliza la ejecución de un ciclo y continúa ejecutando el resto del código de la computadora. A continue declaración, por otro lado, continúa iterando el bucle desde el principio.
14. ¿Qué es la programación orientada a objetos?
OOP significa Programación Orientada a Objetos y es un paradigma de programación que implementa el diseño de software en torno a datos y objetos, en lugar de funciones o procedimientos.
15. ¿Qué es la programación procedimental?
La programación procedimental es un paradigma de programación que organiza el código de computadora en torno a las secuencias o pasos de las instrucciones que se van a ejecutar. Como su nombre lo indica, es un enfoque de arriba hacia abajo que comienza el código desde la fase inicial de los eventos y termina con el final esperado de los eventos.
16. Explicar la programación funcional
La programación funcional es un paradigma de programación informática que aborda Desarrollo de software ad-hoc aplicando funciones secuenciales que no mutan el estado ni los datos de los argumentos proporcionados.
El objetivo es crear programas más sólidos que produzcan los resultados esperados sin efectos secundarios imprevistos.
17. Explique Lenguaje de alto nivel
Un lenguaje de programación de alto nivel es un lenguaje informático que apela más a la comprensión humana que a los detalles o la naturaleza de la computadora.
Los lenguajes de programación de alto nivel como C y Python son fáciles de entender, mientras que un lenguaje ensamblador de bajo nivel puede ser muy confuso para los novatos.
18. Lista Popular Idiomas de bajo nivel
Solo hay dos lenguajes de programación de bajo nivel: ensamblador y código de máquina.
19. Definir un ataque de inyección SQL
Un ataque de inyección SQL es un proceso de ingreso de declaraciones SQL en campos de entrada, como entradas de nombre de usuario o dirección, con la esperanza de que un desarrollador no desinfecte adecuadamente las entradas durante la programación. Y cuando tiene éxito, dicho ataque permite al atacante obtener acceso de administrador al servidor.
20. ¿Qué es una tabla en SQL?
Una tabla en SQL se refiere a una colección de datos que se agrupan en columnas y filas. Cada columna tiene un tipo de datos distinto y puede tener varias tablas en una sola base de datos. También puede consultar más de una tabla a la vez.
Creas una tabla con:
CREATE TABLE table_name(tipo de datos de columna1, tipo de datos de columna2, tipo de datos de columna3, …);
21. Explica la diferencia entre un objeto y una clase
Un objeto es una instancia de una clase, mientras que una clase es un modelo a partir del cual se crea un objeto. Un objeto puede tener estados y propiedades, como color, altura, peso, velocidad, etc.
Estas propiedades deben definirse o inicializarse con valores predeterminados como mínimo.
22. ¿Cuántos bits hacen un megabyte?
Hay 8,000,000 bits en 1 Megabyte porque un byte son 8 bits y un Mega son 106.
23. Definir un tipo de datos flotante
Un float es un tipo de dato que representa un número con fracciones decimales. Se utiliza en situaciones en las que se necesita un mayor nivel de precisión que el que pueden proporcionar los números enteros estándar. Un ejemplo de flotador es:
0.013
or
25.932
24. ¿Qué significa el HexaDecimal 0xFF?
0xFF significa 255 decimal o binario 11111111. 0x significa base 16 o notación hexadecimal, que va de 1 a 9 y luego continúa con A a F para representar 15. Entonces, 0xF es 15 decimal, mientras que 0xFF es 255 decimal.
25. Nombre los tipos de errores en la programación
Hay 3 tipos principales de errores en un programa de computadora, ellos son:
- Error de sintaxis
- error lógico
- Error de tiempo de ejecución
26. ¿Qué es un error de sintaxis?
Un error de sintaxis ocurre cuando hay una desviación de la sintaxis a menudo estricta de los lenguajes de programación. Podría ser el resultado de la simple colocación incorrecta de letras en los parámetros incorrectos que se pasan a una función. La mayoría de los compiladores incluirán el número de línea del código fuente donde ocurrió el error.
27. ¿Qué es un error lógico?
Un error lógico es un error que surge de la forma en que funciona un programa. Entonces, si bien el programa puede ejecutarse sin problemas, no logra su propósito. Los errores lógicos pueden ocurrir de muchas maneras y ser causados por muchas razones.
28. ¿Qué es un error de tiempo de ejecución?
Un error de tiempo de ejecución es un error de programa informático que se produce durante la ejecución del programa y debido a circunstancias imprevistas. Entonces, aunque el programa funciona perfectamente, por ejemplo, los problemas de memoria y red pueden hacer que el programa se comporte mal.
29. Explique Lenguajes fuertes frente a débilmente tipificados
Un lenguaje fuertemente tipado es estricto con respecto a sus diferentes tipos de datos y cómo puede convertirlos, mientras que un lenguaje débilmente tipificado impone menos restricciones sobre los tipos de datos y sus definiciones.
Muchos lenguajes de escritura débil convertirán los tipos de datos automáticamente, mientras que los lenguajes de escritura fuerte a menudo requieren conversiones explícitas.
30. ¿Qué es la Arquitectura MVC?
MVC se refiere a Model-View-Controller y es un patrón de desarrollo de software para interfaces de usuario. Separa la lógica del programa en 3 partes.
El modelo parte maneja la lógica de datos subyacente de los objetos en cuestión, mientras que la view maneja la visualización de información al usuario, y la controlador maneja el flujo de datos entre las vistas y los modelos. El diseño MVC se usa a menudo con la programación orientada a objetos.
31. Defina un Algoritmo
Un algoritmo es una secuencia de procedimientos diseñados para resolver un problema específico. Estos procedimientos generalmente se dividen en pasos más pequeños y la computadora los hace exactamente de esa manera cada vez.
Los ejemplos de algoritmos incluyen reconocimiento facial, búsqueda en Google, la forma en que te atas los zapatos, codificar o cifrar datos, etc.
32. Que es ¿Aprendizaje automático?
El aprendizaje automático o ML es una sección de inteligencia artificial que se centra en ayudar a los sistemas a identificar patrones y tomar decisiones por sí mismos a través del consumo de datos.
Esto entonces mejora su rendimiento o eficiencia. Los sistemas de aprendizaje automático pueden ser supervisados, no supervisados y basados en refuerzo.
33 Qué son ¿Expresiones regulares?
Una expresión regular o Regex es una cadena utilizada para definir patrones de búsqueda en documentos de texto. Diferentes lenguajes de programación implementan expresiones regulares o usan bibliotecas de expresiones regulares populares. Un ejemplo de expresión regular para hacer coincidir todos los caracteres en un texto es:
(. *)
mientras que lo siguiente solo coincide con archivos mp3:
.+\.(mp3)$
34. ¿Qué hace el operador Módulo (%)?
El operador de módulo % toma dos operandos y divide el primer operando usando el segundo. Luego devuelve el resto de la operación como resultado.
A menudo se usa para probar números pares e impares dividiendo cualquier número entero por 2, donde un resultado de 0 significa un número par y 1 significa un número impar.
35. Explique bifurcación del proceso
bifurcación proviene de la tenedor() Función en sistemas Unix y Linux que puede ser utilizada por un proceso en ejecución para crear una copia de sí mismo. Entonces, la bifurcación de procesos es la duplicación de un proceso para crear dos procesos similares que se ejecutan simultáneamente.
Un tipo adicional de bifurcación se refiere a tomar el código fuente de un De código abierto proyecto y crear un programa completamente nuevo a partir de él.
36. Explique Hilo de desove
La generación de subprocesos es el proceso de creación de un nuevo subproceso de CPU para ejecutar un proceso. Los programas con uso intensivo de cómputo suelen utilizar el desove para aprovechar las capacidades de subprocesos múltiples de un procesador y su éxito depende de la CPU en la que se ejecuta, cuántos núcleos tiene y cuántos subprocesos por núcleo ofrece.
37. Qué hacer Palabras reservadas ¿Media?
Las palabras reservadas son términos que no puede usar como identificador en un lenguaje de programación. Esto incluye funciones, variables y etiquetas. Están reservados porque ya han sido definidos y tienen significados específicos.
38. Lista de palabras reservadas populares
Los diferentes idiomas tienen diferentes palabras reservadas en función de su sintaxis. Estas son las palabras reservadas más populares en programación:
- IF
- VERDADERO
- FALSO
- SWITCH
- ELSE
- CASE
- Booleano
- DEVOLUCION
- FUNCIÓN
- ROMPER
- GOTO
39. ¿Qué es una cadena?
Una cadena es una secuencia de caracteres, a menudo contenida en una matriz y utilizada para definir datos de texto. La cadena más popular es "hola mundo".
40. ¿Qué es una Variable?
Una variable es cualquier valor que puede cambiar durante la ejecución de un programa. Una variable puede ser de cualquier tipo de datos, incluidas cadenas y números enteros. Por ejemplo, un programa se inicializa de la siguiente manera:
int a = 0;
int b = 1;
luego, durante la ejecución, se realizan cambios:
b = a+b; //b ha variado
41. ¿Qué es una constante?
Una constante es una variable que no se espera que cambie durante la ejecución del programa. Un buen ejemplo es la velocidad de la luz o el sonido. Diferentes lenguajes de programación le permiten definir constantes de diferentes maneras. Por ejemplo, en C:
const float medio_c = 261.62; //La tecla media c en un piano es 261.6255 Hz
42. Definir una matriz
Una matriz es un tipo de variable que se utiliza para almacenar múltiples valores a la vez. Muchos lenguajes le permiten almacenar valores de tipos de datos similares únicamente, mientras que otros lenguajes pueden manejar matrices con diferentes tipos. También puede tener matrices multidimensionales, que son matrices de matrices y pueden ensuciarse.
Definir una matriz en mql4 es simple con:
cadena TextArray[100]; //una matriz de cien cadenas
43. Que es ¿Sobrecarga de funciones?
La sobrecarga de funciones es un método que permite a un desarrollador definir múltiples funciones que comparten el mismo nombre pero tienen diferentes funcionalidades. Esto se logra creando las diferentes versiones de funciones con diferentes argumentos. Entonces, el compilador sabe qué función se necesita según el tipo y la cantidad de argumentos proporcionados.
44. Defina un Llamar por referencia
Una llamada por referencia es un método para pasar la dirección de memoria de los argumentos a una función, a diferencia del método estándar de pasar una copia del valor del argumento. El objetivo de las llamadas de referencia es que la función modifique directamente el argumento.
45. Explique Operadores aritméticos
Estos son caracteres especiales que funcionan para realizar operaciones aritméticas en un lenguaje de programación. Los operadores aritméticos incluyen:
- La suma o el más unario (+)
- Resta o menos unario (-)
- Multiplicación (*)
- División (/)
- Módulo (%).
46. Explique Operadores logicos
Los operadores lógicos son palabras o símbolos que se utilizan para realizar operaciones basadas en la lógica condicional. La mayoría de los idiomas tienen solo 3 operadores lógicos:
- Y (&& en C, C++, JavaScript)
- OR (|| en C, C++, JavaScript)
- NOT (! en C, C++, JavaScript)
47. 1 lógico Y 0 =?
Una operación lógica 1 Y 0 le dará false porque el segundo operando es 0 y necesita que ambos operandos de la operación AND sean 1 o VERDADERO para obtener una salida positiva.
48. Lógico NO 1 =?
Una operación lógica NOT 1 le dará false porque el operador NOT niega todo lo que le das, lo que significa que convierte 1 en 0 y 0 en 1. Entonces, darle un operando 1 o VERDADERO da como resultado 0 o FALSO.
49. Lógico 1 NAND 1 =?
Una operación lógica 1 NAND 1 producirá false porque ambos operandos son VERDADEROS y el operador NAND siempre niega dos entradas similares para producir una salida opuesta.
Así, si la operación fuera 0 Y 0, entonces la salida sería 1 o VERDADERO.
50. 1 lógico XOR 1 =?
Una operación lógica 1 XOR 1 producirá false porque mientras que una operación OR normal producirá VERDADERO en una o ambas entradas siendo VERDADERO, una operación XOR (OR exclusivo) solo produce VERDADERO cuando solo una entrada y no la otra es VERDADERO.
Conclusión
Hemos llegado al final de esta lista de las 50 preguntas más importantes de la entrevista de programación y sus respuestas. Y como puedes ver, el mundo de la programación es vasto pero apasionante.
No hay dos entrevistas iguales. Por lo tanto, si bien esta lista lo orienta en las direcciones correctas del tema, también debe tratar de obtener una mejor comprensión de cada problema.