¿No acaba de entender por qué las empresas plantean problemas a LeetCode en las entrevistas de software?

Veo que muchas empresas hacen preguntas a LeetCode para trabajos de ingeniería de software. (incluso solo para desarrollar el front-end del sitio web).

Esas preguntas pueden ser muy específicas y no algo que un ingeniero de software típico haría incluso en 15 o 20 años. Por ejemplo, podría ser, dadas las ranuras de 10000 x 10000 y los divisores de altura variable entre ellas, ahora descubra una región de 20 x 20 que pueda atrapar la mayor cantidad de agua de lluvia cuando llueve durante mucho tiempo.

Y puede haber 1500 preguntas diferentes en la base de datos de LeetCode.

Y el problema es que muchos programadores pueden escribir algún código que pueda encontrar la respuesta, pero el problema generalmente tiene algunos trucos en la propiedad del problema que, de alguna manera, puede hacerlo más rápido.

Y se hacían investigaciones para este tipo de problemas, a veces durante meses o años, como maestría o doctorado. tesis.

Pero la cuestión es que los programadores, especialmente los programadores que desarrollan el front-end de un sitio web, no lo hacen en absoluto. Ni siquiera una vez en 20 años. Así que no es realmente el contenido de su trabajo real.

Pero a las compañías les gusta hacerle estas preguntas, y las personas que leen las respuestas en LeetCode, pueden obtener 5 de 5 puntos por varias sesiones de entrevista y entrar a la compañía, mientras que la persona que escribió una solución correcta pero no la solución que la gente tardó meses o años en averiguarlo antes, obtiene un 3 o 3.5 de 5 solamente, y es rechazado como candidato.

Y lo que encontré a veces es: estos ingenieros ingresan a la empresa y, a veces, ni siquiera pueden escribir el código correcto. Conocen las respuestas estándar a esas preguntas, pero cuando ven un problema real, a veces no saben cómo pensar, no tan bien como los candidatos que realmente pueden pensar bien en las entrevistas.

Pero las empresas contratan a personas que utilizan este método de todos modos. No entiendo muy bien cómo y por qué funciona de esta manera?

mis amigos dijeron que le hicieron una pregunta imposible y que salió directamente de la entrevista, pero luego trabajó en esta empresa de pruebas de Android de mala calidad y fue adquirida y adquirida por Google, y desde entonces afirmó: "Oh, estas preguntas de Leetcode son tan justos". Hable sobre el tipo de pensamiento esclavo.

Respuestas (7)

Pero las empresas contratan a personas que utilizan este método de todos modos. No entiendo muy bien cómo y por qué funciona de esta manera?

Algunas empresas no cuentan con ingenieros experimentados que analicen el proceso de la entrevista. Una falla de su parte si están contratando ingenieros, pero bastante común. Entonces, RR. HH. solo busca alguna métrica para usar.

¿Ha asistido alguna vez a la entrevista en la que puede mostrar durante la discusión del cuestionario que el código que han utilizado es incorrecto o es una mala práctica? Están evitando esta situación.
@ user10186832 No soy un desarrollador, pero he visto una pregunta de ingeniería utilizada donde la respuesta esperada era incorrecta y expliqué por qué. Y he visto una pregunta de cumplimiento en la que la respuesta esperada había sido ilegal durante un par de años desde que se modificó la legislación.
"Algunas empresas" - ¿En serio? Es más como "el 90% de las empresas con departamento de RRHH".
@TomTom quizás para desarrolladores? no sabría Pero no es normal para la ingeniería y muchas otras industrias profesionales.
@TomTom Encuentro que las personas que afirman que el 90% hace X no entienden completamente el tema
@TomTom Creo que acabas de tener mala suerte o es una cuestión de software. Quizás incluso local específico
Sí, puede ser un pensamiento de software. Como toda la pregunta ES SOBRE ELLO. ¿O crees que hacen esas pruebas de codificación con gente de piso en el comercio minorista? Y no es específico de la ubicación: visto esto en varios países, siempre empresas más grandes y establecidas donde TI es una "historia secundaria" (es decir, su negocio no es hacer software).
@TomTom ese no es el 90% de las empresas entonces, te refieres al 90% de cierto tipo de empresa con cierto tipo de visión sobre TI.
@TomTom En mi localidad, el 100 % de las empresas no sabrían qué es LeetCode y nadie lo consideraría útil como métrica. Solo lo sé porque hice clic en el enlace.
@TomTom sí, contratan desarrolladores y consiguen que otros desarrolladores realicen las evaluaciones técnicas. También contratan ingenieros y, a menudo, soy el tipo que realiza la evaluación técnica para ellos. Me contratan específicamente para las entrevistas. Incluso hago esto para empresas que están en competencia directa entre sí.
Parece que es sólo una cosa cultural. Exactamente el 0 % de las empresas con las que me he entrevistado utilizan alguna de estas pruebas. Es un mundo grande y probablemente solo entrevistaste una pequeña parte de él.
Las grandes empresas de software como Amazon hacen preguntas al estilo leetcode durante sus entrevistas. Los entrevistadores son ingenieros o gerentes de ingeniería. Dudo que a estas empresas les falten ingenieros que revisen el proceso de contratación.

No entiendo muy bien cómo y por qué funciona de esta manera?

Una cosa muy importante a tener en cuenta es que el objetivo del proceso de contratación de una empresa es contratar a personas calificadas, lo más fácilmente posible. Eso es todo.

Su objetivo no es asegurarse de que todas las personas calificadas obtengan una entrevista. El objetivo no es encontrar a ese candidato "diamante en bruto", alguien con un historial laboral deficiente, o que hace mal las entrevistas, o que olvida cosas mientras codifica en la pizarra, o que comete errores en una codificación cronometrada. evaluación, etc., pero en realidad tendría éxito en el trabajo.

Mientras los puestos de trabajo estén ocupados por buenas contrataciones, el proceso de contratación está funcionando. ¿Hay "falsos negativos", personas rechazadas por el proceso que están calificadas y que habrían tenido éxito en el trabajo? Por supuesto que los hay, pero desde el punto de vista del proceso de contratación, eso es necesario. Una empresa no tiene tiempo para entrevistar a todas las personas que se postulan, por lo que necesita alguna forma de filtrar a los solicitantes para que las personas que realmente sean entrevistadas tengan muchas probabilidades de estar calificadas. Si entrevistan a 5 personas calificadas para un puesto, no importa que otras 5 personas calificadas no hayan pasado el corte.

Tenga en cuenta que no estoy afirmando que las preguntas del tipo LeetCode hagan la mejor evaluación de un desarrollador, o que una empresa que las usa piense que lo hacen. Lo que digo es que no importa nada si estas preguntas no tienen ninguna relevancia para el trabajo. No importa que nunca inviertas una cadena o que encuentres todos los números primos en una lista; lo único que importa es que la empresa piense que su proceso está funcionando: que está encontrando candidatos calificados de la manera más eficiente posible.

Entonces, si desea postularse para una empresa que ha decidido que usará estas pruebas, tiene dos opciones: puede practicar estos problemas o puede sentarse sin estar preparado y esperar que tenga suerte.

También vale la pena señalar que los falsos negativos para la empresa son mucho menos costosos que los falsos positivos. Preferirías rechazar a algunas personas que habrían hecho un buen trabajo, siempre y cuando (casi) nunca contrates a alguien que es activamente malo en eso. Puede que Leetcode no sea bueno en eso, pero al menos eliminan a las personas que no pueden programar.

Porque RH y los reclutadores a menudo están totalmente desconectados de la realidad (como en: delirantes de su valor) y no saben nada sobre TI. Buscan ALGUNA métrica para medir qué tan buenas son las personas sin molestar al departamento de TI con un día laboral de prueba o algo así.

Y eso significa que necesitan pruebas medibles. Y luego los agregas y posiblemente algún gerente sea tan estúpido (sí, esa es la versión amigable) que no se da cuenta de que CADA persona de TI que he conocido se da cuenta de que esas pruebas no significan nada, que rápidamente usan una prueba totalmente inexacta.

Este es un caso serio de engaño masivo: toda una industria que piensa que significan algo cuando todos los que programan saben que no significan nada.

Se vuelve aún mejor cuando esos empleados incompetentes no son despedidos nuevamente porque "es muy difícil conseguir a CUALQUIERA de nuestro departamento de recursos humanos, es mejor que trabajemos con lo que tenemos". Eso significa que el Principio de Peter está en pleno efecto, el grupo de TI se convierte en una mezcla de personas incompetentes (ya que los competentes seguirán adelante), todo porque Recursos Humanos hace un trabajo maravilloso con pruebas que no funcionan.

Recuerde que algunos de esos gerentes llegaron allí por el Principio de Dilbert.

Desde el punto de vista de un entrevistador: se puede aprender mucho sobre la competencia de un codificador observando cómo aborda el problema, qué suposiciones hace, qué preguntas se da cuenta de que debe hacer, etc. Eso a menudo ni siquiera requiere que el candidato proporcione una solución completa. Puede parecer ridículo, pero en realidad tiene valor cuando se hace bien.

Esto no significa que todos los entrevistadores estén capacitados para hacerlo de esta manera; algunos realmente se están desmoronando.

Solo si el entrevistador sabe algo sobre TI (o al menos el argumento específico), de lo contrario, cómo ataque el problema y qué suposiciones hago no tienen sentido ya que no puede entender si son válidas en primer lugar.
En la mayoría de los casos, lo está entrevistando el departamento en el que podría ser contratado, por lo que se debe asumir su competencia para evaluarlo.

La contratación es un proceso lento y costoso. Muchas empresas descargan eso en los reclutadores y/o pruebas de tecnología en línea.

Estas pruebas de estilo están muy bien comercializadas. Afirman que brindan a las empresas una forma casi gratuita de examinar a los candidatos, hacer las preguntas correctas, encontrar el mejor talento, y es por eso que las empresas los utilizan.

Si no te gusta hacerlos o no ves cómo son relevantes, entonces dilo. Pregunte por una forma diferente de demostrar sus habilidades. - No siempre funciona, pero a veces sí.

Esas preguntas pueden ser muy específicas y no algo que un ingeniero de software típico haría incluso en 15 o 20 años.

Estas preguntas de estilo son 100% relevantes para la ingeniería de software y lo que un ingeniero de software "típico" debería saber, pero completamente irrelevantes para muchas áreas de nicho dentro de la ingeniería de software, como el desarrollo web, porque la mayor parte del conocimiento de CS es abstraído por lenguajes de alto nivel. y bibliotecas.

La mayoría de estas pruebas de estilo se centran en la ingeniería de software en su conjunto, no en áreas agradables, por lo que muchas empresas ofrecen pruebas de CS, no de desarrollo web.

(Más bien, los centrados en el desarrollo web a menudo están mal escritos y se centran en preguntas irrelevantes de CS)

Algunas empresas están comenzando a darse cuenta de esto, pero tomará tiempo para que las cosas cambien.

Esencialmente, las empresas solo quieren la forma más económica de encontrar buenos candidatos, y estas pruebas de estilo lo prometen, incluso si no lo proporcionan.

"Estas preguntas de estilo son 100% relevantes para la ingeniería de software" - las preguntas son nieche. Hago software desde hace 30 años, especialistas en sistemas backend y db. Esto es lo que programa la GRAN mayoría de las empresas: sistemas que toman datos de una base de datos y juegan con ellos en una interfaz de usuario o procesos. ¿Y luego te golpean con preguntas de bajo nivel y te piden que programes un SORT? Diablos, no ordeno el código, le digo a la base de datos que ordene los datos. Sí, puedo buscarlo, pero este es un código de bajo nivel que casi nunca se escribe en el mundo real, y si es así en contextos especiales MUY específicos.

Si tiene muchos candidatos, dedicar tiempo a cada uno se vuelve muy costoso. Entonces, cualquier cosa que filtre 500 candidatos a 10 es bueno para la empresa. También es valioso si no puede ser acusado de discriminación cuando eliminó a 492 candidatos. Entonces, una pregunta de "leetcode" es bastante buena a este respecto.

Puedes ser un buen desarrollador sin poder resolver ese tipo de problema, pero la habilidad da una pequeña pista.

Quiero agregar una respuesta aquí, que es afirmar que no es que la empresa no sepa lo que está haciendo. Saben exactamente lo que están haciendo: quieren contratar al tipo obediente, no al inteligente.

Este tipo de patrón se repite en la historia. Hace 1000 o 2000 años, si puedes recitar y memorizar alguna escritura o texto antiguo, te conviertes en el oficial de la dinastía y, en cierto modo, gobiernas a otras personas. Las personas que no se molestaron en memorizar 200,000 palabras de guiones, serán gobernadas por las personas que estén dispuestas a ser obedientes a la Dinastía. ¿Es eso razonable? Tal vez no.

Sin embargo, si no es razonable, ¿lo hará? ¿Serás lo suficientemente obediente como para hacer lo que no es razonable para obedecernos? Si nos obedeces, haremos que gobiernes a otras personas. De otra forma no. El "obedecer" es la clave aquí.

Lo mismo sucedió con la educación en Hong Kong o quizás en el Reino Unido hace algunos años. (No estoy seguro de hoy en día). La física o las matemáticas avanzadas que te enseñaron, no era para que las entendieras. Te dicen cómo resolver algo, memoriza algunas ecuaciones, por ejemplo, la longitud de una cuerda y el peso de una bola de plomo, y ahora muévela 45 grados, ¿cuál es su frecuencia de vibración? Si memorizas la fórmula en un examen y das la respuesta, obtienes 10/10 puntos. De lo contrario, obtienes 0/10 puntos. Los que pueden obtener 95/100 puntos, pueden ir a una universidad. (Solo alrededor del 2% de la población de Hong Kong podía ingresar a una universidad en ese momento, porque Hong Kong en ese momento solo tenía solo dos universidades para una población de 6 millones de personas). Y cuando ingrese a la universidad, se convertirá en líder o ingeniero en una empresa y obtendrá 8000 dólares de Hong Kong al mes. De lo contrario, ingresa con un diploma de escuela secundaria, y es un "técnico", y obtiene quizás 3000 dólares de Hong Kong por mes. Mucha gente no podía permitirse el lujo de estudiar en el extranjero, por lo que no era como "oh, solo ve a la universidad" como en los EE. UU. (pero incluso en los EE. UU., mire lo que sucede cuando está dispuesto a hacer Leetcode o cuando no está dispuesto a regurgitar soluciones óptimas).

Así que memorizar fórmulas, ¿es eso razonable? Talvez no. Pero, ¿eres lo suficientemente obediente para hacer eso? Hong Kong especialmente tenía esta cosa sobre el colonialismo. Que es: Reino Unido quería gobernar HK (como colonia). No podía usar a la gente del Reino Unido para gobernar directamente a la gente de Hong Kong, ya que a la gente no le gustaría. Así que pagan un salario ridículamente alto a la gente de Hong Kong, digamos, cuando son mayores, 15.000 dólares de Hong Kong cada mes, para que obedezcan al gobierno. Y luego, al obtener un salario tan alto, a su vez se convertirán en funcionarios del gobierno y gobernarán a la gente. Tienden a seguir órdenes porque no quieren perder su trabajo e ingresar al sector privado y quizás ganar solo $ 11,000 por mes en su lugar. Entonces, el punto clave es que el gobierno quería gente obediente. La obediencia es la clave. Como resultado, te dan un sistema de educación que es lo que la gente local llama "rellenar un pato a la pequinesa" y mucha gente pensaba que no era razonable, y casi todo el mundo seguía ese sistema. Verás, si obedeces, estarás en lo alto de la sociedad. Si no obedeces, se asegurarán de que permanezcas en el fondo.

Nunca hice preguntas de código lelet, pero probablemente estoy haciendo preguntas de estilo similar en las entrevistas de programación. Dudo que memorizar 1500 respuestas sea en realidad la forma más fácil de ser bueno en esto.
No voté negativo. Pero no creo que resolver Leetcode signifique que eres obediente con el jefe o la empresa . La gente no puede memorizar las soluciones a los 1500 problemas de Leetcode. La mejor manera es entender la lógica de cada solución. Leetcode tiene sus pros y sus contras. Algunos problemas de Leetcode son geniales, ya que ayudan a las personas a escribir un código eficiente , mientras que otros problemas de Leetcode son solo acertijos sofisticados/inútiles . Acepto que Leetcode no es la forma mejor ni más precisa de medir las habilidades, el talento o la inteligencia de un programador. Con suerte, muchas empresas mejorarán el proceso de contratación.
no, no lo entendiste. Es la "disposición" a usar Leetcode lo que demuestra su obediencia. Al igual que cuando no entiendes de física pero estás dispuesto a memorizar fórmulas y a "calcular" algo que realmente no entiendes.