Pregunta Preguntas alternativas sobre FizzBuzz [cerrado]


Alguien tiene buenas preguntas tipo FizzBuzz que no son 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.


75
2017-09-22 21:39


origen


Respuestas:


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ía usa Google y similares.


90
2017-09-22 21:54



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 para leer Codificando Horror Vale la pena seguir entrevistando. Pídales que escriban la solución rápidamente, discútala brevemente (p. Ej., ¿Cómo 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".


26
2017-09-23 02:39



Cualquiera de los primeros de 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 para   contener 1000 dígitos?


21
2017-09-22 22:12



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


11
2017-09-22 21:47



Fibonacci, invertir una cadena, contar número de bits establecidos en un byte son otros comunes. Proyecto Euler también tiene una gran colección de dificultad creciente.


7
2017-09-22 21:42



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

Preguntar: muéstrame (en papel, pero mejor en   una pizarra) cómo cambiaría el   valores de dos variables.

Esta no era mi idea, pero era publicado en un comentario por alguien llamado Jacob en una entrada en el blog todo sobre la pregunta original de FizzBuzz.

Jacob continúa diciendo:

Si no lo hacen comienzo con crear un   tercera variable, puedes casi   escribe a esa persona. He encontrado eso   Puedo cortar un tercio a la mitad de mi   (Es cierto que en ese momento no selectivo)   solicitantes con esa pregunta solo.

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).


7
2017-10-30 09:41



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, Tres en reverso. 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.


6
2017-10-25 05:56



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.


3
2017-09-22 21:42



Devuelve el índice de la primera   ocurrencia 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.


2
2017-09-22 21:55



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?


2
2017-09-22 22:02