[Frecuencia] Preguntas, casos y respuestas del algoritmo de entrevista inicial, ¡puede aprenderlo tan pronto como lo aprenda!

Tabla de contenido

prefacio

tema

1. Invertir una cadena

2. Determinar la cuerda palíndromo

3. Deduplicación de matriz

4. Encuentra los valores máximo y mínimo

5. Secuencia de Fibonacci

6. Encuentra los números que faltan

7. Determinar si dos cadenas son anagramas

8. Realice el aplanamiento de matrices

9. Implementar la compresión de cadenas

10. Determina si es un número continuo en una matriz desordenada

Resumir


prefacio

Aunque el trabajo de desarrollo de front-end presta más atención al dominio de tecnologías como HTML, CSS y JavaScript, los algoritmos y las estructuras de datos también son una de las habilidades básicas que deben poseer los ingenieros de front-end. Las entrevistas de muchas empresas también incluirán algoritmos. Hoy resumo algunas de las preguntas de algoritmos más comunes para ti. ¡Comencemos con los algoritmos!

tema

1. Invertir una cadena

Requisitos del tema: escriba una función para invertir la cadena de entrada.

Ejemplo:

Ingrese: "¡Hola, mundo!"

Salida: "!dlroW ,olleH"

function reverseString(str) {
  return str.split('').reverse().join('');
}

2. Determinar la cuerda palíndromo

Requisitos del tema: escriba una función para determinar si la cadena de entrada es una cadena palíndromo (tanto directa como inversa).

Ejemplo:

Nivel de entrada"

Salida: verdadero

function isPalindrome(str) {
  const reversed = str.split('').reverse().join('');
  return str === reversed;
}

3. Deduplicación de matriz

Requisitos del tema: escriba una función para eliminar elementos duplicados en la matriz de entrada.

Ejemplo: Entrada: [1, 2, 3, 3, 4, 4, 5]

Salida: [1, 2, 3, 4, 5]

function removeDuplicates(arr) {
  return Array.from(new Set(arr));
}

4. Encuentra los valores máximo y mínimo

Requisitos del tema: escriba una función para encontrar los valores máximo y mínimo en la matriz de entrada.

Ejemplo:

Entrada: [3, 1, 9, 6, 2, 5]

Salida: el valor máximo es 9, el valor mínimo es 1

function findMinMax(arr) {
  const min = Math.min(...arr);
  const max = Math.max(...arr);
  return { min, max };
}

5. Secuencia de Fibonacci

Requisitos del tema: escriba una función que ingrese un número n y devuelva el valor del n-ésimo número en la secuencia de Fibonacci.

Ejemplo:

Entrada: 6

Salida: 8 (la secuencia de Fibonacci es 0, 1, 1, 2, 3, 5, 8, ...)

function fibonacci(n) {
  if (n <= 1) {
    return n;
  }
  let a = 0;
  let b = 1;
  for (let i = 2; i <= n; i++) {
    const temp = a + b;
    a = b;
    b = temp;
  }
  return b;
}

6. Encuentra los números que faltan

Requisitos del tema: dada una matriz desordenada de números enteros del 1 al n, uno de los cuales falta, escriba una función para encontrar el número que falta.

Ejemplo:

Entrada: [4, 2, 1, 6, 5]

Salida: 3

function findMissingNumber(arr) {
  const n = arr.length + 1;
  const totalSum = (n * (n + 1)) / 2;
  const actualSum = arr.reduce((sum, num) => sum + num, 0);
  return totalSum - actualSum;
}

7. Determinar si dos cadenas son anagramas

Requisitos del tema: dadas dos cadenas, determine si son anagramas (reorganizados a partir de las mismas letras).

Ejemplo:

Entrada: 'escuchar', 'silencio'

Salida: verdadero

function isAnagram(str1, str2) {
  const sortedStr1 = str1.split('').sort().join('');
  const sortedStr2 = str2.split('').sort().join('');
  return sortedStr1 === sortedStr2;
}

8. Realice el aplanamiento de matrices

Requisitos del tema: escriba una función para aplanar una matriz multidimensional anidada en una matriz unidimensional. No se puede utilizar el método plano de matriz.

Ejemplo:

Entrada: [1, [2, [3, 4], 5], 6]

Salida: [1, 2, 3, 4, 5, 6]

function flattenArray(arr) {
  return arr.reduce((result, current) => {
    if (Array.isArray(current)) {
      result.push(...flattenArray(current));
    } else {
      result.push(current);
    }
    return result;
  }, []);
}

9. Implementar la compresión de cadenas

Requisitos del tema: Dada una cadena, escriba una función para comprimirla de modo que cuando el número de ocurrencias consecutivas del mismo carácter sea mayor o igual a 2, conecte el carácter y su número de ocurrencias.

Ejemplo:

Ingrese: "aabbbbbccdd"

Salida: "a2b4c2d2"

function compressString(str) {
  let compressed = '';
  let count = 1;
  for (let i = 0; i < str.length; i++) {
    if (str[i] === str[i + 1]) {
      count++;
    } else {
      compressed += str[i] + count;
      count = 1;
    }
  }
  return compressed;
}

10. Determina si es un número continuo en una matriz desordenada

Requisitos del tema: dada una matriz de enteros desordenada, escribir una función para determinar si los elementos de la matriz pueden formar una secuencia continua de números.

Ejemplo:

Entrada: [5, 3, 2, 6, 4]

Salida: verdadero (los elementos 2, 3, 4, 5 y 6 en la matriz pueden formar una secuencia continua de números)

function isConsecutive(arr) {
  const sortedArr = arr.sort((a, b) => a - b);
  for (let i = 1; i < sortedArr.length; i++) {
    if (sortedArr[i] !== sortedArr[i - 1] + 1) {
      return false;
    }
  }
  return true;
}

Resumir

Las preguntas de algoritmo no solo examinan la capacidad de programación y la capacidad de resolución de problemas del entrevistador, sino que también reflejan el dominio del entrevistador de los principios básicos de informática. Por lo tanto, cuando se prepare para la entrevista inicial, organice razonablemente el tiempo para aprender algoritmos y estructuras de datos, y mejore su capacidad practicando preguntas de algoritmos, lo que agregará más competitividad a la entrevista.

Supongo que te gusta

Origin blog.csdn.net/weixin_42373175/article/details/131700195
Recomendado
Clasificación