Las 8 preguntas y respuestas más importantes de la entrevista de codificación 2022 [para principiantes y experimentados]

Publicado: 2021-08-25

Una buena base de las estructuras de datos como arreglos, árboles binarios, tablas hash y listas enlazadas es esencial. Debe conocer los algoritmos y métodos esenciales y tener un buen dominio de los lenguajes de programación como Java, especialmente si está solicitando trabajos de programación. Definitivamente puede aprender las respuestas a las preguntas importantes de la entrevista de codificación, pero se recomienda encarecidamente practicar las soluciones por su cuenta.

Las 8 mejores preguntas de la entrevista de codificación y sus respuestas

Veamos algunas de las preguntas de codificación más importantes que se hacen en entrevistas organizadas por grandes empresas como Microsoft, IBM, Google, etc.

1. ¿Cómo puedes encontrar el primer carácter no repetido en una palabra?

Para responder a esta pregunta, primero debe comprender qué se debe hacer para promover esta función. Se necesita escribir una función que acepte cadenas y devuelva los primeros caracteres no repetidos.

Por ejemplo, en la palabra 'pasaje', 'p' es el primer carácter no repetido o en la palabra 'tortuga', 'u' es el primer carácter no repetido. Entonces, ¿cómo resolvemos este problema? Podemos crear una tabla para almacenar las repeticiones de todos los caracteres y luego seleccionar las primeras entradas que no se repiten.

Para escribir un código que devuelva las primeras letras no repetidas, podemos usar LinkedHashMap para almacenar el recuento de caracteres. Este HashMap sigue el orden de la inserción y los caracteres se inicializan en la misma posición que en la cadena. La cadena escaneada debe iterarse usando LinkedHashMap para elegir la entrada requerida con el valor de 1.

Otra forma de abordar este problema es usar firstNonRepeatingChar(String word). Esto permite identificar en una sola pasada el carácter no repetido que aparece primero. Este enfoque utilizó dos almacenamientos para reemplazar una interacción. Este método almacena los caracteres repetidos y no repetidos por separado y cuando finaliza la iteración, el carácter requerido es el primer elemento de la lista.

2. ¿Cómo puede eliminar los duplicados de las matrices?

Primero, debe usar LinkedHashSet (interfaz de conjunto) para conservar el orden de inserción original de los elementos en el conjunto. Debe usar bucles o funciones recursivas para resolver este tipo de preguntas de entrevistas de codificación.

El principal factor que debemos tener en cuenta cuando se trata de arreglos no son los elementos que tienen duplicados. El principal problema aquí es eliminar los duplicados. Las matrices son estructuras de datos estáticas que tienen una longitud fija, por lo que no es posible modificarlas. Entonces, para eliminar elementos de las matrices, debe crear nuevas matrices y duplicar el contenido en estas nuevas matrices.

Primero, debe convertir las matrices en Arraylists y luego crear LinkedHashSets a partir de estas ArrayLists. Si las matrices de entrada contienen una mayor cantidad de duplicados, pueden generar múltiples matrices temporales, lo que aumenta el costo de importar el contenido. Esta restricción obliga a que abordemos este problema de una manera que requiera menos memoria y potencia de procesamiento.

Debemos eliminar los duplicados pero no copiarlos en las matrices resultantes, por lo tanto, no eliminar los duplicados por completo sino simplemente reemplazarlos con 0 como valor predeterminado.

3. ¿Cómo podemos comprobar si un número es un número primo?

Esta es una de las preguntas de entrevista de codificación más comunes que implican averiguar si el número dado es un número primo o no. Este tipo de programas son la base del pensamiento algorítmico, ya que debemos encontrar soluciones que se basen en el hecho de que los números primos son todos los números naturales que no se pueden dividir por números positivos distintos de 1.

Debemos escribir código para crear bucles que verifiquen cada número desde 1 hasta el número de destino para ver si el número de destino es divisible por cualquier otro número positivo que no sea él mismo o 1.

Esta función nos llevará a la solución. Al verificar un número que es especialmente grande, simplemente podemos verificar hasta la raíz cuadrada de N, siendo N el número objetivo. No es necesario verificar hasta N en el caso de una raíz cuadrada elegible.

Si el número no es divisible por 2, no hay necesidad de comprobar si es divisible por otros números pares, disminuyendo así el tiempo necesario para encontrar la solución. Esta es una versión optimizada de la solución donde resulta útil analizar el número antes de escribir la solución.

4. ¿Cómo puede verificar si las cadenas contienen solo dígitos?

Si desea escribir expresiones regulares para verificar si las cadenas son solo números o si contienen caracteres que no son dígitos, primero debe familiarizarse con el uso de juegos de caracteres en expresiones regulares de Java. Los lenguajes de programación como Java admiten expresiones regulares con la ayuda de la clase java.util.regex.Matcher y java.util.regex.Pattern. Java.util.regex es un paquete dedicado para este propósito.

Para validar la existencia de solo números usando expresiones regulares, podemos usar código para analizar si las cadenas contienen un número entero sin procesar. Verificaremos si la cadena contiene solo dígitos entre 0 y 9. Incluso si la cadena contiene dígitos pero también otros caracteres, no es una cadena numérica simple. Las expresiones regulares solo verifican los números enteros y no consideran los caracteres de punto (.), por lo que los números decimales y los puntos flotantes fallan en la prueba.

5. ¿Cómo puede invertir las palabras en una oración de destino sin la ayuda de métodos de biblioteca?

Esta es también una de las preguntas de entrevista de codificación más comunes. Primero, debemos entender el requisito y cómo llenar el vacío en este requisito. Cuando nos enfrentamos a preguntas como estas, primero debemos concentrarnos en hacer las preguntas correctas. Las cadenas no son más que oraciones de caracteres decididos que pueden contener una sola palabra o varias palabras.

Una oración también puede estar vacía. Por ejemplo, si se nos da la oración, 'Programar es divertido', debemos revertirla a 'Divertido es programar'. efectivamente. Debemos usar expresiones regulares en Java para dividir las cadenas dadas en espacios y luego aplicar el método reverse() de la clase de utilidad Collections.

Una vez que pueda dividir las cadenas usando regex'\\s', se devolverá una matriz de palabras como resultado. Esto también se encarga de las palabras separadas usando múltiples espacios. Tan pronto como se devuelva la matriz, puede optar por crear ArrayLists a partir de estas matrices y luego usar el método Collections.reverse(). Esto invierte ArrayLists y cada palabra se reinicializará en el orden inverso.

Ahora, todo lo que queda es usar StringBuilder para concatenar varias cadenas a través de la iteración de ArrayList. Uno debe asegurarse de que se especifique el tamaño, ya que el cambio de tamaño de StringBuilder es un proceso costoso en términos de potencia de procesamiento y memoria. El cambio de tamaño termina creando nuevas matrices al copiar el contenido de las matrices más antiguas.

6. ¿Cómo puede reemplazar o eliminar caracteres de las cadenas?

Supongamos que tenemos una cadena, 'Woocommerce', y deseamos reemplazar la letra 'r' con 'n', existen varios métodos para lograrlo. Las clases de cadenas en Java brindan múltiples enfoques para reemplazar caracteres dentro de cadenas usando CharSequence y subcadenas.

Puede llamar fácilmente a un método de reemplazo dentro de la cadena que terminará reemplazando el carácter de destino y devolverá el carácter deseado como resultado. Las cadenas son inmutables en lenguajes de programación como Java.

Por lo tanto, cada vez que estas operaciones, como la eliminación o el reemplazo, se realizan en cadenas, se generan nuevos objetos de cadena de forma predeterminada. Hay 4 métodos sobrecargados para reemplazar cadenas usando Java:

  • replace(char char viejo, char char nuevo)
  • replaceAll (cadena expresión regular, reemplazo de cadena)
  • replace (objetivo de CharSequence, reemplazo de CharSequence)
  • replaceFirst (cadena expresión regular, reemplazo de cadena)

CharSequence es una de las súper interfaces para cadenas, StringBuilder y StringBuffer, que nos permite pasar cualquiera de los objetos de estos como argumentos para este método de reemplazo. replaceAll() termina reemplazando cada coincidencia con cadenas de reemplazo, mientras que replaceFirst() solo reemplaza las primeras coincidencias.

Con todo, todas estas son metodologías poderosas que aceptan la expresión regular. La clase Java.lang.String permite todos estos métodos sobrecargados que pueden reemplazar fácilmente caracteres individuales o subcadenas en Java.

Se recomienda enfáticamente usar replaceAll() ya que esto reemplaza cada aparición de caracteres coincidentes. Seguir este enfoque nos permite esperar patrones de expresiones regulares, obteniendo así más poder. Este método también puede reemplazar cada coma con canalizaciones para convertir archivos separados por comas en cadenas delimitadas por pilas.

Sin embargo, si desea reemplazar solo un carácter, puede usar el método replace() que toma en consideración el carácter anterior y el nuevo.

Leer: Preguntas y respuestas de la entrevista de Java

7. ¿Cómo se pueden agregar textos a archivos en lenguajes de programación como Java?

Agregar es muy diferente en comparación con la creación de nuevos archivos y la escritura de datos en los nuevos archivos. En los casos de agregar, los archivos ya existen y simplemente debemos agregar texto al final del archivo. Esto es similar a los archivos de registro, ya que se actualizan constantemente con el sistema.

Los archivos de registro son el ejemplo perfecto de cómo agregar texto, ya que las aplicaciones continúan agregando detalles de registro en estos archivos de forma iterativa. No se requieren marcos de registro para este problema, pero debe saber cómo agregar texto a los archivos existentes. Para resolver este problema, debe conocer las clases de conveniencia para escribir archivos de caracteres.

La clase tiene constructores que asumen la aceptabilidad del búfer de bytes predeterminado y la codificación de caracteres. Si desea especificar los valores usted mismo, simplemente puede construir OutputStreamWriter utilizando FileOutputStream. La disponibilidad de los archivos depende de las plataformas subyacentes, que determinan si el archivo se puede crear o no.

Algunas plataformas permiten que los archivos se inicialicen para funciones de escritura utilizando un solo FileWrite o varios objetos de escritura de archivos. Sin embargo, los constructores de esta clase fallarán una vez que el archivo involucrado ya esté inicializado. FileWriter se usa para escribir flujos de caracteres y FileOutputStream puede escribir flujos de bytes sin formato.

Aprenda cursos de desarrollo de software en línea de las mejores universidades del mundo. Obtenga Programas PG Ejecutivos, Programas de Certificado Avanzado o Programas de Maestría para acelerar su carrera.

8. ¿Cómo puedes encontrar el número más grande o más pequeño en una matriz de enteros?

Para esta solución, debemos codificar una función o método que pueda encontrar el número más grande o más pequeño de matrices que son enteros completos. Primero debemos crear un archivo fuente en Java con el nombre MaximumMinimumArrayDemo.java y copiar el código escrito aquí para su compilación y ejecución.

Podemos usar dos variables a las que podemos referirnos como 'más grande' y 'más pequeña' para almacenar los valores máximo y mínimo respectivamente de las matrices. El número más pequeño se puede inicializar usando integer.MIN_VALUE y el más grande se puede inicializar usando integer.MAX_VALUE.

Con cada iteración de los bucles que ha iniciado, puede comparar los números actuales con 'más grande' y 'más pequeño' y actualizarlos en consecuencia. Las matrices no anulan el método toString en Java, por lo que puede usar Arrays.toString() para imprimir el contenido de las matrices de destino.

Puede usar este método estático para llamar directamente a la función principal. Luego debe pasar las matrices aleatorias a través de este método para verificar si los valores máximo y mínimo se han devuelto con precisión. También puede optar por automatizar esta prueba a través de pruebas unitarias en su IDE.

Checkout: Las 4 mejores habilidades informáticas para incluir en su currículum

Conclusión

Los cursos que se centran en la programación no solo son excelentes para resolver problemas, sino que también aumentan sus posibilidades de ser seleccionado al solicitar puestos de trabajo. Si desea obtener más información sobre programación Java y problemas de codificación más avanzados, puede inscribirse en un curso completo, como la Maestría en Ciencias en Ciencias de la Computación de upGrad o el Curso de desarrollo de pila completa .

Conviértase en un desarrollador de pila completa

Solicite la certificación PG vinculada al trabajo de upGrad en ingeniería de software