one nodejs code fizzbuzz

nodejs - fizzbuzz solution



Preguntas alternativas sobre FizzBuzz (14)

Devuelve el índice de la primera aparición de la cadena X dentro de la cadena Y

La implementación de strstr () requiere una comprensión básica del lenguaje al tiempo que brinda la oportunidad de una optimización inteligente.

¿Alguien tiene alguna buena pregunta tipo FizzBuzz que no sea el problema de FizzBuzz?

Estoy entrevistando a alguien y FB es relativamente bien conocido y no tan difícil de memorizar, así que mi primera parada en la búsqueda de ideas es mi nueva adicción SO.


Cualquiera de los primeros del Proyecto Euler probablemente sería bueno.

Por ejemplo:

Problema 25

La secuencia de Fibonacci se define por la relación de recurrencia:

Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.

Por lo tanto, los primeros 12 términos serán:

F1 = 1 F2 = 1 F3 = 2 F4 = 3 F5 = 5 F6 = 8 F7 = 13 F8 = 21 F9 = 34 F10 = 55 F11 = 89 F12 = 144

El 12º término, F12, es el primer término que contiene tres dígitos.

¿Cuál es el índice del primer término en la secuencia de Fibonacci que contiene 1000 dígitos?



Encontrar una lista de números primos es una pregunta bastante común, pero aún requiere un poco de reflexión y hay diversos grados de respuestas que las personas podrían dar.

También se sorprendería de cuántas personas luchan por implementar una estructura de datos de tipo Mapa / Diccionario.


Fibonacci, invertir una cadena, contar número de bits establecidos en un byte son otros comunes. El proyecto Euler también tiene una gran colección de dificultades crecientes.


He encontrado que revisar una cadena si se trata de un palíndromo es bastante simple y puede ser un deshierbe decente.


He visto una pequeña lista de problemas de programación relativamente simples utilizados para descartar candidatos, al igual que FizzBuzz. Estos son algunos de los problemas que he visto, en orden creciente de dificultad:

  1. Invierta una cuerda
  2. Invertir una oración ("bob likes dogs" -> "dogs likes bob")
  3. Encuentre el valor mínimo en una lista
  4. Encuentra el valor máximo en una lista
  5. Calcule un resto (dado un numerador y denominador)
  6. Devuelve valores distintos de una lista que incluye duplicados (es decir, "1 3 5 3 7 3 1 1 5" -> "1 3 5 7")
  7. Devuelve valores distintos y sus recuentos (es decir, la lista anterior se convierte en "1 (3) 3 (3) 5 (2) 7 (1)")
  8. Dada una cadena de expresiones (solo variables, + y -) y un conjunto de pares de variables / valores (es decir, a = 1, b = 7, c = 3, d = 14) devuelve el resultado de la expresión ("a + b + c -d "sería -3).

Estos fueron para Java, y podría usar las bibliotecas estándar, por lo que algunos de ellos pueden ser extremadamente fáciles (como 6). Pero funcionan como FizzBuzz. Si tiene alguna pista sobre la programación, debería poder hacer más rápidamente. Incluso si no conoce bien el idioma, al menos debería ser capaz de dar la idea detrás de cómo hacer algo.

Usando esta prueba, uno de mis jefes anteriores vio de todo, desde gente que lo hizo todo muy rápido, a gente que podía hacerlo bastante rápido, a un tipo que no podía responder ni una sola vez después de media hora.

También debo señalar: permitió que las personas usen su computadora mientras se les asignaban estas tareas. Se les instruyó específicamente que podrían usar Google y similares.


Les pedí a mis candidatos que crearan un programa para calcular el factorial de un número dado en cualquier seudo idioma de su elección. Es un problema bastante fácil de resolver y se presta bien a las consultas de seguimiento naturales (que a menudo se pueden hacer) sobre la recursión.


Pídales que escriban una aplicación para devolver los factores de un número determinado. Es fácil de hacer y difícil de hacer bien en un corto período de tiempo. Puedes ver su estilo y la forma en que piensan a través de los problemas en una pequeña cantidad de tiempo.


Para algo realmente súper simple que se puede hacer en 10 segundos, pero que eliminaría a las personas que, literalmente, no pueden programar nada , prueba este:

Pregunte: muéstreme (en papel, pero mejor en una pizarra) cómo intercambiaría los valores de dos variables.

Esta no fue mi idea, pero fue publicada en un comentario de alguien llamado Jacob en una publicación de blog sobre la pregunta original de FizzBuzz.

Jacob continúa diciendo:

Si no comienzan con la creación de una tercera variable, puede escribir a esa persona. Descubrí que puedo reducir un tercio a la mitad de mis solicitantes (ciertamente en ese momento no selectivo) con esa sola pregunta.

Hay otra discusión interesante después de ese comentario en la publicación original del blog sobre formas de realizar este intercambio de variables sin requerir una tercera variable (agregar / restar, xor etc.), y por supuesto, si está usando un lenguaje que admite esto en una sola declaración / operación, puede que no sea una buena prueba.

Aunque no es mi idea, quise publicar esto aquí, ya que es una pregunta simple, elegante y sencilla que puede (y debe) ser respondida en aproximadamente 10 segundos por alguien que haya escrito incluso el más simple de los programas. Tampoco requiere el uso de operadores aparentemente oscuros como el operador de módulo, que muchas personas, que de otra manera son programadores bastante decentes, simplemente no están familiarizados (lo que sé por mi propia experiencia).


Qué tal: quiero usar un solo entero para almacenar múltiples valores. Describe cómo funcionaría eso.

Si no tienen idea de las máscaras de bits y las operaciones, probablemente no puedan resolver otros problemas.


Quería una pregunta de FizzBuzz que no involucre al operador de módulo. Especialmente porque normalmente estoy entrevistando a desarrolladores web para quienes el operador de módulo simplemente no aparece con tanta frecuencia. Y si no es algo con lo que se encuentre regularmente, es una de esas cosas que busca las pocas veces que lo necesita.

(Por supuesto, es un concepto que, idealmente, debiste haber encontrado en un curso de matemáticas en algún momento, pero ese es un tema diferente).

Entonces, lo que se me ocurre es lo que llamo, sin imaginación, Threes in Reverse . La instrucción es:

Escriba un programa que imprima, en orden inverso , cada múltiplo de 3 entre 1 y 200.

Hacerlo en orden normal es fácil: multiplique el índice del ciclo por 3 hasta que llegue a un número que exceda 200, luego déjelo. No tiene que preocuparse por la cantidad de repeticiones que finalizarán, simplemente continúe hasta llegar al primer valor que sea demasiado alto.

Pero yendo hacia atrás, debes saber por dónde empezar. Algunos pueden darse cuenta intuitivamente de que 198 (3 * 66) es el múltiplo más alto de 3 y, como tal, codifican 66 en el bucle. Otros pueden usar una operación matemática (división entera o un piso () en una división de punto flotante de 200 y 3) para descubrir ese número, y al hacerlo, proporcionar algo más genéricamente aplicable.

Esencialmente, es el mismo tipo de problema que FizzBuzz (recorriendo los valores e imprimiéndolos, con un giro). Este es un problema para resolver que no utiliza nada tan (relativamente) esotérico como la operación de módulo.


Si se trata de una entrevista C / C ++, asegúrese de que la persona sepa sobre los punteros.

General: algoritmo simple (lista vinculada [única / doble]). Pregunte sobre la complejidad de agregar en cada caso (al principio, al final, optimizaciones ...)?

(General) ¿Cómo se encuentran el mínimo y el máximo de una matriz (tamaño N) con solo 3 * N / 2 comparaciones?

C / C ++: ¿Cómo optimizarías múltiples "strcat" s en un buffer?


Tal vez esto no responda tu pregunta directamente, pero no estoy seguro de que necesites encontrar otro problema. Además de ser "fácil de memorizar", la pregunta de FizzBuzz es simplemente "fácil", y ese es el punto. Si la persona que está entrevistando pertenece a la clase de personas a la que FizzBuzz es "conocida", entonces pertenecen a la clase de personas que una pregunta tipo FizzBuzz no se filtraría. Eso no significa que los contrates en el acto, pero sí significa que deberían ser capaces de superarlo y llegar a la carne de la entrevista.

Para decirlo de otra manera, cualquiera que se tome el tiempo de leer Coding Horror merece más entrevistas. Solo pídales que escriban la solución muy rápido, discútala brevemente (por ejemplo, ¿cómo se prueba esto?), Y luego pase a la siguiente pregunta. Y como dice el artículo, "es realmente asombroso cuántos candidatos son incapaces de las tareas de programación más simples".