Soy ingeniero de software con más de 20 años de experiencia, pero he fallado 5 entrevistas tecnológicas seguidas porque no me fue tan bien en los problemas de algoritmos. ¿Debo cambiar mi carrera?

No

Debes confrontarlos directamente. Pregúnteles si se espera que codifique algoritmos como parte del trabajo. Cuando respondan que no, entonces pregunte “¿por qué me hacen preguntas que no son relevantes para el trabajo?”

Algunos ingenieros de software piensan que su clase de algoritmos de pregrado cubre la lista de todas las cosas posibles algorítmicas y difíciles en software, y tratan de usar esto como un indicador de competencia. Pueden ser muy insulares si no han trabajado en un gran número de diferentes tipos de problemas, el tipo de cosa que tendría alguien con 20 años de experiencia.

La gente me pregunta todo el tiempo, ¿cómo puedes hacer aprendizaje automático si tienes un título en química teórica? Luego explico que las redes neuronales fueron inventadas por químicos teóricos.

Puedo enumerar docenas de algoritmos que encuentro todo el tiempo que no están cubiertos en las clases CS: SGD, SCD, SVD, SVD ++, BFGS, L-BFGS, NMF, LDA, LSH, LSA, SVM, WSVM, TSVM, HyperLogLog , BackProp, AdaGrad, Word2Vec, … Me sorprendería si el entrevistador pudiera decirme qué significan las siglas y mucho menos derivar un par de ellas de memoria. Apuesto a que no 1 de cada 100 puede explicar por qué el análisis estándar CS big-O falla completamente para SGD: ¡el algoritmo de aprendizaje automático más básico!

Además, admite que puede resolver los problemas, pero no bajo la presión del tiempo. Es curioso, cuando estaba cursando mecánica cuántica de posgrado, lo cual supere, no teníamos un límite de tiempo en nuestros exámenes. El trabajo real lleva tiempo.

El poder del pensamiento lento – The Boston Globe

Comencé a programar cuando estaba en la secundaria. A los 16 años estaba escribiendo código en la supercomputadora Cray Y-MP. He apoyado a numerosas compañías que van desde SBIRs y Startups hasta Wall Street y Fortune 100. Después de codificar durante 30 años, nunca tuve que escribir mi propio algoritmo de clasificación.

Ahora no estoy diciendo que no debas conocer algoritmos. De eso no se trata esta pregunta y no estoy implicando esto. Simplemente hay tantos, y de tan variada complejidad, que hacer un cuestionario aleatorio basado en el tiempo es una forma ridícula de evaluar a un candidato general.

Como programador, gran parte de su trabajo se dedicará a aprender los entresijos de los nuevos marcos, escanear StackOverflow en busca de pistas, escribir pruebas cuidadosas, etc.

Y trabajando con otros.

Una buena entrevista es aquella en la que se le pide que explique lo que ha hecho antes; no para resolver acertijos de la escuela secundaria y problemas de tareas de pregrado.

Pero no confíes en mi palabra.
Google admite que sus famosas preguntas de entrevistas de trabajo fueron una ‘completa pérdida de tiempo’

“Lo que funciona bien son entrevistas de comportamiento estructuradas, en las que tiene una rúbrica coherente de cómo evalúa a las personas” … Esto incluye pedirle a un candidato que describa una situación de la vida real en la que resolvió un problema analítico difícil. Esto tiene el beneficio adicional de mostrarle al entrevistador lo que el candidato considera un problema analítico difícil “en lugar de que cada entrevistador simplemente invente cosas”.

Así es exactamente como entrevistamos a los candidatos en Demand Media, y fuimos la primera OPI de mil millones de dólares desde Google.

El papel del entrevistador es hacer preguntas de sondeo. ¿El candidato realmente entiende lo que describe y en qué nivel de complejidad? ¿Hicieron el trabajo ellos mismos o como parte de un equipo? ¿Entendieron los fundamentos o simplemente siguieron una especificación? ¿Pueden describir las compensaciones de ingeniería? Si usan jerga, ¿pueden explicar la jerga?

Hay buenos lugares que te necesitan.
No te rindas No te rindas nunca.

Muchas buenas respuestas aquí, así que no estoy seguro de cuánto valen mis dos centavos, pero espero que ayude de alguna manera.

Respuesta corta
No. Lo hice y realmente extraño la programación para un trabajo a tiempo completo, pero al mismo tiempo, ahora trabajo en una oficina increíble, con un equipo increíble, con un increíble equilibrio entre la vida laboral (aunque en un campo no relacionado) para que no todo esté perdido .

En todo caso, solicite comentarios si no tiene éxito (algunos son mejores que otros para proporcionar) y repasar las cosas. Coursera tiene un gran programa sobre algoritmos (entre otros) que se ofrece a menudo, lee descifrando la entrevista de codificación, practica en sitios como HackerRank y codewars.com, red (por ejemplo, compra café de personas que acaban de entrevistar, asiste a reuniones locales), contribuye al código abierto .

Respuesta larga
Comencé con Drupal hace 5 o 6 años, leyendo lo que pude encontrar, tratando de enseñarme a mí mismo mientras trabajaba en un trabajo a tiempo completo completamente no relacionado. Me di cuenta de que me apasionaba la codificación, pero no tenía la educación formal, así que constantemente (todavía lo hago) dudaba de mí y de mis habilidades. Llevé el síndrome del impostor al extremo.

Hace 2 años recibí un mensaje vinculado sobre una startup en mi ciudad que buscaba un desarrollador de Drupal. Normalmente los ignoraba, pero en ese momento estaba pensando en un cambio. Respondí y, para resumir, me ofrecieron el trabajo. Una vez más, dudé de mí mismo y de mis habilidades y este fue mi primer trabajo de “programación” a tiempo completo, así que tomé un recorte salarial sustancial y cambié de ruta.

Avancé rápidamente un año y medio y rápidamente me di cuenta de que era mejor de lo que pensaba y que encontrar buen talento fue difícil. Fui promovido dos veces y aumentando cada vez más la gestión y haciendo menos codificación, lo que odiaba. Sabía que aún necesitaba más experiencia en codificación y quería unirme a un equipo del que pudiera aprender.

Experiencia 1
Durante este tiempo, ocasionalmente recibí mensajes de compañías web más establecidas (léase: reclutadores) preguntándome si estaba interesado en una conversación sobre las aperturas que tenían. Empecé a decir que sí. Mi primera entrevista en persona basada en esto fue HORRIBLEMENTE .

Tuve una conversación inicial con el reclutador y la pasé al gerente para una conversación telefónica. Durante él, le gustó mi experiencia y transparencia (no tenía una educación formal, estaba al tanto de mis dudas, quería formar parte de un equipo donde pudiera aprender y contribuir). Me dijo que el siguiente paso sería un ejercicio de codificación emparejado en persona.

Me preparé revisando los temas que discutimos y me dijo que eran importantes, marcadores, marcadores de Google, recursos importantes y revisión de la sintaxis de Python (lo usaron, no lo había hecho en años). Cuando me presenté, un panel de 4 entrevistadores me recibió, me dieron una pizarra y me dijeron que codificara. Me congelé y entré en pánico. No hace falta decir que lo hice terriblemente a pesar de tener experiencia con las preguntas que me hicieron (tomé dos cursos de educación continua de la universidad y programación que incluía tareas sobre las preguntas formuladas; sabía algo de lo que necesitaba, pero no todo, aunque no podía descongelar yo mismo).

Ellos dijeron gracias pero no gracias.

Experiencia 2
Solicité un puesto en una empresa local genial (de tamaño medio) y no esperaba mucho. Sin embargo, recibí un correo electrónico invitándome a una prueba en línea a través de una plataforma de prueba de codificación cronometrada. Afortunadamente, acababa de comenzar a practicar en la misma plataforma, así que no estaba totalmente asustado.

Hice la prueba y pensé que lo hice terriblemente: no terminé ninguna de las preguntas, pero tenía una idea de dónde se suponía que debía ir con ella, de nuevo en función de mi experiencia en el curso de programación de computadoras (como un lado, Q1 era para programe una calculadora manejando paréntesis y aritmética simple. Aprendí después de la prueba que puede usar un algoritmo de dos pilas para esto, pero en ese momento, analicé la expresión y la evalué con regresión. Q2 fue determinar si un robot hace un círculo en un plano cartesiano Había hecho esto antes y no terminé porque no me dejé suficiente tiempo).

Para mi sorpresa, me llamaron para una entrevista de seguimiento. Sin embargo, mi hija acaba de nacer y estuvo en el hospital durante las primeras 2 semanas de su vida (está bien). Retrasé la entrevista hasta finales de la segunda semana y confirmó el propósito: dijeron que era solo para conocerme, lo que tomé como no codificación. Incorrecto.

El seguimiento comenzó bien y luego dijeron: aquí hay un documento compartido de Google, codifiquemos. Me ahogué. Era un programa simple para ordenar una lista de enteros sin clasificar. No es difícil, lo había hecho cien veces.

Comencé y dije que revisaría la lista uno por uno y cuando me preguntaron por qué, me quedé completamente en blanco, tonto, lo sé (aparte, acabo de comenzar el curso sobre algoritmos y me confundí, todavía me pateo ) Luego pasé el resto del tiempo enfocándome en el hecho de que me quedé en blanco.

Al final, me dijeron que estaban buscando a alguien con más experiencia.

Después de esto, me sentí desmoralizado, combinado con mi constante duda y mi nueva familia, dejé de buscar conciertos de programación y volví a mi antiguo campo. Pero una vez hecho esto, ahora trabajo cerca de casa, en proyectos geniales, con excelentes personas y tengo un increíble equilibrio entre la vida laboral y personal. Simplemente no codifico para vivir.

No te rindas Solicite comentarios para ayudar siempre a mejorar.

EDITAR:
Recientemente me encontré con este artículo y pensé que sería útil / perspicaz:
Who Y Combinator Companies Want – Triplebyte Blog

PARCIALMENTE responderé tu pregunta, no sé si deberías cambiar la carrera o no, pero en mi opinión, NO.

Tuve el mismo problema, al principio no pude resolver tales problemas algorítmicos en absoluto. luego luché y los resolví exitosamente pero en un marco de tiempo muy amplio (¡1 problema podría tomar hasta 6 horas para resolverlo!), después de eso pude resolverlo solo en un tiempo razonable pero NO bajo presión.

En una entrevista me hicieron exactamente la misma pregunta que acabo de resolver, hace unos días, le dije al entrevistador, pero él me pidió que continuara resolviéndolo, sin embargo, no pude resolverlo, tampoco estaba cerca de la solución y, por supuesto, fue rechazado

Actualmente he sido entrevistado por reserva, Amazon (aunque no recibí oferta) pero hago un muy buen trabajo, resolviendo casi el 80-90% de las preguntas de la entrevista que no estoy capacitado para resolver.

Pero hay un secreto: ¡PRÁCTICA!

Codeforces topcoder Desafíos y cursos de programación HackerRank son tus amigos.

15 horas a la semana durante 6 meses son más que suficientes para abordar casi todas las entrevistas.

Recibí esos valiosos consejos del libro “descifrando el código de la entrevista”:

  1. escriba todo el código en papel tal como lo compilará y ejecutará (incluya punto y coma 🙂).
  2. copie el código que escribió al IDE y verifique si hay errores de sintaxis.
  3. prueba tu código y casos de esquina.
  4. los errores corregidos pueden aparecer.
  5. ¿problema resuelto? repetir.

Sugeriría recoger Cracking the Coding Entrevista: 150 Preguntas y soluciones de programación: Gayle Laakmann McDowell: 9780984782802: Amazon.com: Libros y comenzar a practicar. El libro sugiere que escriba el código a mano en papel y luego escriba, compile y ejecute. También puede usar solo Vim, que evita toda la ayuda de IDE y reduce el tiempo necesario.

Fallar cinco entrevistas no es gran cosa; particularmente si estás entrevistando después de muchos años. Las entrevistas fallidas significan una cosa: “Eres malo entrevistando para un trabajo de programación, no para la programación misma”. Una buena lectura es conseguir ese trabajo en Google . No se limita a Google, pero es cierto en general para programar entrevistas.

Cuando era niño, hice mucha codificación de velocidad, y estaba en dos nuevas empresas (cofundadora de una) antes de la escuela de posgrado. Básicamente, no conocí a ningún programador de más de 30 durante ese tiempo. Ahora, ahora estoy en el lado equivocado de 30 y conozco a muchos programadores mucho mayores que yo en IBM.

La comparación de los hábitos de los “programadores para niños” (incluso “de hace más de 10 años”) y algunos de los veteranos que conozco es sorprendente. Muchos veteranos de C / Java no pueden escribir nada en la pizarra, realmente, no codificarán nada desde cero dentro de una hora o dos, tal vez debido al miedo a fallar, y tienen una propensión sorprendente al exceso de ingeniería. No digo que esto sea universal, y ciertamente podría encontrar una serie de cosas positivas sobre los programadores veteranos y los “programadores para niños” menospreciados.

Mi mejor consejo para los veteranos es: aprender Python o R. Aprender a distinguir entre algoritmos y “arquitectura empresarial”. Deja de pensar en la falla antes de tener la idea algorítmica correcta. Deje de intentar usar un servidor de aplicaciones y una arquitectura de mensajería en cada proyecto. Recupere el placer de escribir scripts rápidos, que simplemente hacen el trabajo, al menos de vez en cuando. No tengas miedo de fallar, y prefiere hacerlo rápido, es necesario; estar bien para intentarlo de nuevo. Aclare a todos los miembros del equipo con qué se siente cómodo (incluidas las horas por semana).

1. Has estado en la industria por más de 20 años. Seguramente has hecho contactos en tanto tiempo. ¡Aprovecha eso! Obtenga referencias, ¡pueden recorrer un largo camino!

2. Repasa tus conceptos básicos

Estás compitiendo con personas que acaban de llegar de las universidades y que acaban de aprender sus algoritmos. Por lo tanto, está marcado en sus cerebros, por ahora. Por lo tanto, repase sus conceptos básicos y construya una base más sólida antes de intentar más entrevistas.

3. Trátelo como un examen.

¡Estudiar! Idealmente, hay un libro de referencia para la preparación en diferentes sectores.

Algunas opciones populares para algoritmos entre los entrevistados incluyen:

i) “Cracking the Coding Interview” por Gayle Laakmann McDowell (entrevistas de trabajo de programación / codificación) ya que incluye preguntas frecuentes de varias de las principales compañías de software / tecnología.

ii) “Algorithm Design Manual” de Steven S. Skiena contiene preguntas basadas en algoritmos.

iii) “Elementos de las entrevistas de programación” de Adnan Aziz, Amit Prakash y Tsung Tsien Lee es otro libro esencial para preparar entrevistas de trabajo de programación. Es uno de los raros libros completos que cubre codificación, estructura de datos, algoritmos y resolución de problemas.

Invierta tiempo suficiente en lectura y práctica. Crear un banco de preguntas también puede ser muy beneficioso. Escriba las preguntas y soluciones de la entrevista. De esta manera, también podrá identificar sus fortalezas y debilidades y trabajar en ellas.

Además, ha podido seguir con esta industria durante más de 20 años. Entonces, a menos que haya perdido interés, un cambio en su carrera profesional no puede ser de gran beneficio.

También puede ayudar a otros candidatos a descifrar su entrevista y conseguir un trabajo, enviando su experiencia de entrevista en esta página: Comparta preguntas y consejos sobre la entrevista | AmbitionBox

Si es un profesional experimentado, no dude en enviar su opinión de la compañía en esta página: Escriba una opinión de la compañía | AmbitionBox

Para acceder a recursos gratuitos de preparación para entrevistas, visite el blog de Ambitionbox: una solución integral para todas sus necesidades relacionadas con la preparación de entrevistas de trabajo.

Comparta su historia de entrevista aquí: https://ambitionbox.com/contribute?review_name=InterviewAdvice&utm_source=Ambitionbox&utm_medium=QuoraFBInTw&utm_campaign=SocialMedia

Escriba reseñas de empresas aquí: https://ambitionbox.com/contribute/company-review?utm_source=Ambitionbox&utm_medium=QuoraFBInTw&utm_campaign=SocialMedia

Lea las reseñas de la empresa aquí | Lea las preguntas y consejos de la entrevista aquí | Explore empresas aquí | Pruebe esta calculadora de salario gratis | Leer entrevistas aconsejar blogs aquí | Prepárate con estas pruebas de práctica

¿Cambiar una carrera porque fallaste en una entrevista tecnológica? Por supuesto que no :). Una entrevista técnica analiza qué tan bien atacas un problema en particular en un período de tiempo limitado. Con compañías más grandes como Google, Facebook, Amazon, Yahoo, etc., el desafío es encontrar un candidato para un puesto en particular de un gran grupo de solicitantes. Ahora que el número de solicitudes es alto, es probable que la variación en términos de habilidades que poseen los candidatos sea muy baja. Por lo tanto, estas empresas necesitan una forma de filtrar a los candidatos y elegir la mejor opción (para ellos). Lamentablemente, saber cómo reflejar un árbol binario se considera más importante que tener la distinción de ser el autor de un paquete de software de última generación.

Debe abordar estas entrevistas con una estrategia clara.
a) El primer paso sería revisar los fundamentos de su CS, es decir, algoritmos, estructuras de datos, etc. No es obligatorio leer algo como Cormen, ya que la mayoría de las personas parecen hacerlo. Internet está lleno de una gran cantidad de sitios web para tales fines. Personalmente, trato de entender las cosas leyendo el código en lugar de pasar por las pruebas matemáticas que están detrás de un algoritmo en particular.

b) Intenta participar en la programación competitiva. Hay sitios web como HackerRank, LeetCode Online Judge, Sphere Online Judge (SPOJ) que le permiten ajustar su conocimiento en un entorno de prueba simulado. Creo que no tiene que ser un jugador de alto rendimiento en este tipo de competiciones, más bien debe ser consciente de las cosas que debe hacer cuando se presenta para una prueba por teléfono (mientras se entrevista para una empresa) o cara a cara. cara.

c) Practique escribir mucho código, solo por diversión. Por ejemplo, piense en un problema de muestra como: Implementar una pila como una lista vinculada, seguimiento: ¿podría implementar un iterador para esta clase de pila? Este problema requiere que codifique inherentemente 3 estructuras de datos, una para la representación del nodo en sí, otra para LinkedList y la última para la pila. Elija cualquier idioma de su elección para que se sienta más cómodo en él. Me gusta usar Python para tales escenarios.

d) Mantenga una pestaña cerrada sobre las preguntas publicadas en Glassdoor – Sea contratado. Ama tu trabajo. , Programación de preguntas de la entrevista | CareerCup. El libro “Cracking the Coding Interview”, es un excelente libro de referencia y también contiene algunos problemas difíciles al final.

También es bueno conocer varios lenguajes de programación, específicamente un lenguaje de tipo dinámico y otro lenguaje de tipo estático. También se debe tener cuidado de estar bien versado sobre la gestión de la memoria, especialmente si codifica en un lenguaje estáticamente tipado como C ++ y su código implica asignar mucha memoria de almacenamiento dinámico (por ejemplo, implementar un Trie en C ++)

PD: Todo esto también proviene de un programador autodidacta, que comenzó una programación seria hace aproximadamente 4 años 😉

Solo piensa en ello:

– ¿Utilizaste esos algoritmos en tu trabajo diario? – Si lo usó, ¿la empresa quedó satisfecha con los resultados?

¿Qué opina de una empresa que no permite preguntas relacionadas con el trabajo? (porque no uso para nada raro en el mejor de los casos)

– ¿Qué crees que si una tarea tiene una fecha límite corta, qué pasará? – ¿Qué pasa si la empresa incluso en la entrevista comienza a dar plazos cortos? – ¿Por qué demonios no te alejas de la habitación, cuando ves las estúpidas preguntas?

Me pregunto si debería cambiar de carrera.

Ah sí, porque te encuentras con 5 estúpidas compañías seguidas?

¿Quieres escuchar mis historias de “éxito”?

– Después de pasar la entrevista, recibí la oferta y los papeles para firmarla para el empleo, también y un papel adicional, donde necesito firmar, pero no llene la fecha: fue la renuncia del trabajo preguntando …

Fui galardonado con un premio en la universidad, porque hice un software, tarea fácil para mí.

Cuando hice el examen de álgebra lineal, deberíamos hacer una tarea fácil + media + alta dificultad. Se suponía que tenía que ver con cálculos en 3D. Los vectores recuerdan enormes fórmulas. En primer lugar, no visité todos esos cursos, en segundo lugar no aprendí y no tenía experiencia, en tercer lugar estaba después de una gran fiesta … Sabía que no tenía absolutamente ninguna posibilidad de pasarlo, así que comencé a buscar más claramente en “especificaciones”. Se le dio 3 puntos en el sistema de coordenadas, de lo que se le pidiera, la longitud de las líneas y el área del triángulo. La longitud de la línea no sé cómo, pero pude calcularla. Usar las matemáticas de la escuela primaria. En ese momento era lo suficientemente bueno como para ganar un par de concursos, pero luego tenía 10 años y en este caso era entonces tenía 29/30 años …

No sabía que era una fórmula para eso, que debería usar, porque este examen es sobre eso …

Pude calcular la proyección del tercer punto a esa línea y calcular nuevamente una longitud de la línea.

Luego usé la única fórmula conocida de geometría de clase 6 (2d). Base * alto / 2 = área. Y a la mierda, lo he resuelto.

El profesor esperaba conocer una fórmula enorme, y no solo una, a partir de cosas de las que hablaba a diario durante más de 3 meses … pero olvidó especificar “mediante el uso de criterios o fórmulas …” No tenía nada que hacer, solo daba el valor máximo. , y eso fue suficiente para aprobar ese examen con el valor más bajo posible 🙂

Fue lo mismo con Nokia, ni siquiera querían invitarme a una entrevista. Otro me empleó, si el cliente me acepta, fue el Nokia.

En el banco ING le dije que el banco local se está cayendo cuando lo estoy usando y es un placer arreglarlo gratis. Simplemente no me tomaron en serio.

Han lanzado la versión móvil, era una tarea de calidad, hice una oferta que no me tomaron en serio.

Después de un tiempo estaba buscando un trabajo para Android. He pedido un salario relativamente alto, según mi experiencia. Tenían algunas condiciones adicionales. He agregado dinero extra para eso. Finalmente terminamos las negociaciones con 3 veces el salario promedio en mi trabajo. El cliente final fue el ING Bank, rechazó instantáneamente la oferta de trabajo 🙂

Parece que es la misma situación con Siemens.

En la entrevista fallaron en probar el “pensamiento lógico”

Cuando vi una pista técnica, me hicieron una pregunta como:

“si 3 ratas en 3 días comen 3 quesos y 4 ratas en 4 días, ¿cuántos quesos necesita?”

Mi respuesta fue algo como esto: “1 queso, porque divido en 4 partes iguales y establezco una trampa para ratas y resuelvo el problema de las ratas :)” Después de eso hubo muchas “preguntas algorítmicas, básicamente técnicas de programación muy comunes como Funciones recursivas y “divide-et-impera”, “backtracking”, “programación dinámica”. Escribí en papel el nombre de lo que se necesita usar y menciono que no puedo usar mi cabeza, mientras puedo usar la CPU 🙂

Después de eso, una compañía más pequeña ofreció un trabajo, que hace software para Siemens …

Existe un misterio de por qué quieren pagar 5 veces por el mismo software en lugar de arreglar las preguntas de la entrevista.

Por supuesto, no debe cambiar su carrera debido al fracaso de 5 entrevistas, especialmente si está en esta industria durante más de 20 años. En lugar de consolarlo, prefiero darle consejos sobre cómo preparar su sexta entrevista, que es más práctica para usted.

Muchas personas creen que los graduados nuevos generalmente se desempeñan mejor que los ingenieros experimentados en una entrevista técnica general y cubrí este tema en detalle en mi blog Cómo preparar su entrevista como ingenieros experimentados y me gustaría resumir algunos consejos aquí.

Fortalezas y debilidades de ingenieros experimentados.
La experiencia laboral es sin duda la ventaja número 1 de los ingenieros experimentados. Los ingenieros con más de un año de experiencia laboral generalmente tienen una mejor comprensión de toda la industria y tienden a tener mejores habilidades de comunicación y describen sus ideas de manera mucho más concisa y clara.

Sin embargo, los ingenieros experimentados generalmente tardan en codificar la solución o incluso no logran completarla. A menudo se les ocurrió una idea de alto nivel muy rápidamente, pero cuando intentaron concretar los detalles, a menudo les llevó más tiempo que a un nuevo graduado. Además, aunque conocen muchas de las últimas técnicas, muchos ingenieros experimentados no conocen más que unos pocos términos elegantes.

Consejo 1: aproveche su red
Los ingenieros más experimentados tienen muchos amigos y conexiones en esta industria y cuando estás preparando entrevistas para una empresa específica, es muy probable que puedas conectarte con alguien que trabaje allí revisando tus conexiones Linkedin / Facebook / Twitter / G +.

Después de eso, es mejor que solicite tanta información no confidencial sobre la entrevista como sea posible y solicite una derivación si es posible. Esto debería darle una idea general sobre cómo se ve la entrevista en X.

Consejo 2: haga suficiente investigación sobre la empresa
No está bien no saber nada sobre la compañía en la entrevista, especialmente para un ingeniero experimentado. Le recomiendo que investigue un poco sobre la compañía que está solicitando y que al menos tenga claro lo siguiente:

  • De qué trata principalmente la empresa
  • ¿Cuál es su modelo de negocio?
  • ¿Cuáles son sus competidores y sus debilidades y fortalezas?
  • ¿Cuál es su pila tecnológica?
  • ¿Cuál es su cultura empresarial?

También prepárese bien para preguntas como por qué quiere unirse a la compañía X.

Consejo 3: prepárese bien para estructuras de datos y algoritmos
Esto es exactamente en lo que se destacan los nuevos graduados y es aún más importante para grandes empresas como Google, Facebook, etc. Sé que pueden pasar años desde la última vez que echó un vistazo a un rompecabezas de codificación y esas cosas nunca se usan en realidad mundo, sin embargo, son la base de la informática y una de las mejores y más eficientes formas de evaluar a un candidato.

Creo que ya sabe mucho sobre cómo prepararse para este tema, el punto clave es realmente dedicarle suficiente tiempo y no tener demasiada confianza en su memoria. Es muy común que los ingenieros experimentados salten a la solución correcta súper rápido, pero no pudieron codificarlo perfectamente en poco tiempo, lo que también es lo que describió en su entrevista anterior. Así que presta suficiente atención a esto.

Consejo 4: sigue practicando
La entrevista técnica no solo evalúa su capacidad de codificación, sino también una variedad de habilidades y habilidades como habilidades de comunicación, capacidad de análisis, etc. También muchas personas se sentirán nerviosas al resolver un problema cuando alguien mira por encima del hombro, lo cual es aún más común para la gente no ha tomado ninguna entrevista en mucho tiempo.

Te sugiero que encuentres un amigo que también se esté preparando para una entrevista, ustedes pueden realizar entrevistas simuladas entre sí e intentar familiarizarse con este tipo de atmósfera intensa.

Mucha gente también quiere recibir comentarios de buena calidad de entrevistadores experimentados. Con eso en mente, trabajamos en la construcción de Gainlo – Entrevista simulada con profesionales, que permite a los candidatos realizar entrevistas simuladas con entrevistadores experimentados de las principales empresas como Google, Amazon, Linkedin, etc. y obtendremos comentarios reales para ayudarlos a mejorar.

Estás bien. La mayoría de las empresas tecnológicas (startups y las de Silicon Valley) están obsesionadas con los algoritmos. Para las empresas que tienen un producto real o que trabajan en aprendizaje automático, inteligencia artificial y similares, solo tiene sentido.

Pero aparentemente, no hay muchas compañías que tengan entrevistas exhaustivas. He visto algunas respuestas aquí que las preguntas de la entrevista deberían ser relevantes para el puesto que están contratando, y estoy totalmente de acuerdo con eso. Lamentablemente, la mayoría de los entrevistadores van a “preguntas tipo trivia”, solo para alimentar sus inseguridades.

De todos modos, si realmente quieres entrar en una de estas compañías, debes jugar su juego. Supongo que, después de ir a 5 entrevistas, ya tienes una idea sobre el tipo de preguntas que hacen. Retroceda, tómese unas semanas para recordar y practicar.

Recomendaría el libro: Cracking the Coding Interview por Gayle McDowell ..

Buena suerte…

Las entrevistas como desarrollador experimentado son difíciles. En 2005 me entrevisté con Google. Tenía unos 17 años de experiencia en ese momento. Recibí una oferta pero la rechacé porque después de investigar las cosas, decidí que no quería mudarme a Silicon Valley y viajar. Al año siguiente establecieron una oficina aquí en Waterloo, pero nuevamente rechacé porque la oficina era tan pequeña que había que pasar varias semanas por trimestre en la nave nodriza. Eso no funcionó para mí y mi familia.

Avance rápido hasta 2010. La oficina local ha crecido hasta el punto en que viajar no es tan oneroso. Se acercan a mí otra vez, pero debido al tiempo transcurrido, tengo que entrevistar nuevamente. No hay problema, hagámoslo en una semana. Efectivamente, bombardeo la entrevista. Irónico dado el libro que escribí en conjunto. Pero eso es porque fui en frío a las entrevistas.

Un año después tuve otra oportunidad y supe que probablemente era mi última oportunidad. Puedes apostar que me preparé para este conjunto de entrevistas. Me di mucho tiempo. Vuelve a leer mi libro. Lee algunos libros de algoritmos. Trabajó a través de algunos problemas nuevos. Fui en super preparado. ¡Conseguí el trabajo! Pero no fue fácil.

Además de mis propias experiencias, veo lo que otros pasan, después de haber entrevistado a más de 100 candidatos hasta la fecha, además de los resúmenes de candidatos que veo en el comité de contratación. Pero lo que digo aquí no es específico de Google, seré lo más genérico posible.

En mi opinión, una entrevista tecnológica se trata de responder una sola pregunta: “¿Es esta persona un ingeniero de software capacitado que puede hacer las cosas mientras trabaja como parte de un equipo?” Tres cosas, todas importantes.

La barra para los tres sube a medida que ganas experiencia. Puede ser una superestrella / leyenda en su trabajo actual, pero ¿cómo podría saberlo alguien ajeno a la empresa? Todo lo que pueden hacer es probarlo en función de lo que esperan de un programador sénior en su empresa.

La codificación suele ser lo que dispara a los candidatos senior. Muchos ingenieros de software experimentados hacen poca o ninguna codificación, especialmente si gestionan personas y / o proyectos. Pero las compañías generalmente quieren ingenieros que aún puedan codificar.

Mis consejos

1. Date mucho tiempo para prepararte. Preferiblemente varios meses. Y usa ese tiempo, prepárate .

2. Obtenga la codificación nuevamente. Si no está en el trabajo, haga un proyecto paralelo. O trabajar en código abierto.

3. Para las entrevistas, elija el idioma con el que se sienta más cómodo de la lista de opciones disponibles. No elija el lenguaje “hot” a menos que sea un requisito, o pretenda entender C ++ 11 (¿quién lo hace?) Cuando no lo hace.

4. Descanse mucho antes de las entrevistas. Limpia tu calendario de todos los eventos estresantes.

5. Practique entrevistas en la pizarra. Consigue un amigo que te ayude.

6. Practica entrevistas telefónicas. ¿Puedes pasar la prueba de FizzBuzz? Necesitará esas habilidades básicas de codificación para entrar.

Espero que esto ayude. ¡Sigue intentándolo!

Cuando no se ha entrevistado durante un tiempo, tiende a tener una mala entrevista o 2. Además de cualquier otra cosa, tenga en cuenta las cosas que son relevantes para su trabajo, que no es lo mismo que las prioridades que tenga el entrevistador. Tuve una entrevista en la que querían un poco de experiencia con, por ejemplo, Angular JS o ASP.NET MVC, los cuales deberían haber estado bien. No tuve problemas con una prueba técnica fuera de línea o una entrevista telefónica, pero en persona (por lo que se suponía que era más acerca de establecer el ajuste de la personalidad cada vez) me hicieron preguntas sobre detalles que no había usado mucho en mi trabajo. A menudo, cuando tropiezas no es algo con lo que no puedas lidiar rápidamente, simplemente no has tenido la misma prioridad que el entrevistador.

Tengo una tasa de éxito muy alta en las entrevistas, como contratista he asistido probablemente a muchas más entrevistas que la mayoría de los desarrolladores, pero si observa las discusiones sobre estos, verá que los gustos de Google se están alejando de este tipo de pregunta de algoritmo porque no necesariamente identifica a un candidato que puede escribir código real, solo aquellos que han aprendido ese tipo de algoritmos antes.

Como han dicho otros, no te rindas debido a una serie de malas entrevistas, aparte de cualquier otra cosa, muchas compañías no usan este tipo de pruebas y, en cambio, escribes un código real que no implica el conocimiento de Algoritmo particular. Sin embargo, aprenda de las entrevistas.

Lo importante es que destaques y que les gustes. La mayoría de las personas se entrevistan principalmente cuando lo necesitan, y la presión puede hacer que se congelen o entren en pánico. El candidato exitoso a menudo será alguien que se sienta seguro y relajado, cómodo para explicar lo que ha hecho. Esto es algo en lo que muchos desarrolladores no son tan buenos, pero es algo que puedes mejorar. Practica hablar sobre lo que has hecho, piensa en lo que vas a decir. Tiene preguntas que hacer (sin interrumpir) sobre la forma en que hacen las cosas, como qué gama de tecnologías utilizan más allá de las que han requerido, qué enfoque de desarrollo prefieren, etc. Esto puede mostrar interés en la empresa y interés en seguir procesos adecuados en lugar de simplemente sacar las cosas por la puerta, lo que tiende a verse bien.

No se preocupe por no saber algo en particular: en realidad, algunos de los mejores equipos tienen una combinación de habilidades y, por lo tanto, quieren personas que no solo tengan el mismo conocimiento que los miembros existentes del equipo, sino que a veces los entrevistadores sean pobres para buscar nuevas ideas. que más ‘personas como ellos’, es su fracaso más que el tuyo. Aprenda a relajarse en la entrevista, y si recibe una pregunta sobre el algoritmo, explique sus pensamientos iniciales y refine, y deje que demuestren que está explorando y entendiendo un nuevo problema, y ​​eso debería verse bien siempre que pueda demostrar esa capacidad para aplique la lógica a algo nuevo, ya sea una respuesta ideal o no; si no es un problema familiar, no debe intentar comenzar con la respuesta óptima, sino comenzar con una posible solución y buscar formas de mejorar (como otros lo han hecho) ya mencionado).

No.
si realmente te gusta la codificación, es tu pasión. No solo lo estás haciendo por dinero. Desde entonces, puede prepararse felizmente para estas entrevistas durante unos meses y hacerlo.

Si.
si no te gusta tanto programar. Dado que incluso para campos aliados como la gestión de proyectos / productos, las entrevistas son puramente sobre su experiencia pasada y no implican nada como, puede revertir el árbol binario o no, cuando tiene 40 años y tiene más de 10 años de experiencia. Las preguntas se basan en el conocimiento y las entrevistas son discusiones.

No sé por qué solo la programación de carreras necesita tantos esfuerzos continuos y no otras profesiones aliadas igualmente gratificantes como la gestión de proyectos / productos.
Especialmente a las compañías del área de la Bahía no les importa lo que has hecho o logrado hasta ahora. Lo único que les importa es, ¿pueden hacer DFS de gráfico, en el acto, en la pizarra, debajo del reloj? He tenido la misma experiencia. Ahora creo que es fácil comenzar su propia compañía de software que seguir preparándose. Este tipo de entrevistas necesita que te prepares para toda la vida, ya que seguirás olvidando lo básico cada pocos años. De nuevo competirás con programadores más novedosos y competitivos. Nuevamente tendrá un costo en su tiempo. Esto está afectando efectivamente la movilidad de los ingenieros de software y, por lo tanto, nuestra paga.
Todo esto vale la pena si realmente te gusta la programación . A diferencia de mí, si crees que es una de las formas de ganar dinero.

Renunciar puede ser correcto si:
1. Ya no desea trabajar como ingeniero de software.
2. Estás convencido de que nunca podrás alcanzar el límite de 30 minutos.

Si ese no es el caso, sigue leyendo …
Debido a que hace la pregunta, parece estar convencido de que “simplemente arar” en este surco fallido no es óptimo para usted ni para los entrevistadores.

Cuales son tus problemas ¿Falta de fluidez o falta de conocimiento de algoritmos? Si le falta fluidez, arreglemos eso

FLUIDEZ
Ahora debería tener una biblioteca de problemas de programación de las entrevistas. Practique resolverlos a velocidad en Notepad o Nano (sin ayudas de programación como autocompletar o resaltado de sintaxis (ya que eso es lo que enfrentará en una entrevista. Póngase cómodo allí).

Otras ideas para hacer la vida más fácil:
1. Si está codificando en pizarra, traiga marcadores de punta fina; obtendrá más espacio en la pantalla.
2. Si se le pide que escriba una respuesta, mejore su velocidad de escritura. “gtypist” está disponible en Ubuntu.
3. Si resolver un problema es quedarse sin espacio, tengo dos sugerencias: practique su escritura a mano y considere usar Python para la entrevista. La falta de llaves ahorra un montón de espacio, y el idioma de Python para atravesar árboles de directorios es altamente eficiente.

En términos más generales, puede estar tratando de complicar demasiado sus soluciones. El consejo de Steve Yegge en cinco preguntas esenciales sobre la pantalla del teléfono: steveyegge2 es esencial. No estaría de más leer un montón de sus cosas, incluida la publicación “consigue un trabajo en Google” en http://steve-yegge.blogspot.ie/2

CONOCIMIENTO
Si está luchando por encontrar soluciones a la pregunta, entonces podría beneficiarse al repasar sus conocimientos de algoritmos. Los cursos de algoritmos de Coursera tienen una duración de 5 semanas cada uno y cubren la sección de codificación (NO las matemáticas) para el curso de algoritmos de Stanford. Le piden que escriba (entre otras cosas) Mergesort (más o menos), Quicksort, SCC, Min cut, algunos elementos de agrupación y el Problema del vendedor ambulante.

En general, sería reacio a aconsejar a un ingeniero veterano que aborde este curso debido al riesgo de insulto. En su caso, sin embargo, haré una excepción. Este puede ser el camino a seguir si sus algoritmos son un problema.

Geográficamente, ¿dónde estás entrevistando? Además, ¿realmente fallaste en las entrevistas tecnológicas, o simplemente contrataron a otro candidato que se ajustaba mejor a lo que estaban buscando? No siempre es que estás ‘fallando’; a veces es solo que hay vacantes limitadas y otro candidato se adapta mejor al gusto del entrevistador o tiene una experiencia más relevante.

Tal vez fue cómo resolviste los problemas. ¿Hiciste preguntas contextuales? ¿Explicó su razonamiento para resolver los problemas de la manera que lo hizo? ¿Fue capaz el entrevistador de entender hacia dónde se dirigían sus soluciones? Fui contratado para un puesto de ingeniería de software donde no resolví el problema por completo en los 20-30 minutos que estuvieron disponibles durante la entrevista de codificación, pero hice preguntas relevantes, expliqué cómo y por qué estaba resolviendo el problema de la manera en que estaba resolviéndolo, y los entrevistadores entendieron cuál sería mi solución si tuviera más tiempo para trabajar en ello.

Además, a veces se trata más de cómo encaja la cultura de una empresa o las necesidades específicas de un equipo. Muchas compañías ahora desconfían de los desarrolladores con una historia de ‘lobo solitario’ o de aquellos que no parecen comunicarse total y directamente durante las entrevistas porque las buenas habilidades de comunicación son sorprendentemente raras en nuestra industria. La mala comunicación hunde los barcos. Por lo general, una mejor comunicación es mejor cuando estás en la fase de entrevista en persona. Es importante demostrar que también eres entusiasta y flexible. Has estado en la esfera de desarrollo durante un tiempo, por lo que puede haber algunas suposiciones injustas de que no te adaptarás a diferentes estilos de gestión y trabajo. Enfrenta todo esto de frente con una actitud optimista y un comportamiento activamente amigable. Pregunte directamente a los entrevistadores qué están buscando y qué necesita realmente su equipo para tener éxito; luego, proceda a explicar cómo puede proporcionar / ser eso. O, si no puede ser o proporcionar lo que necesita, al menos lo sabe y no tiene que perder más tiempo con esa entrevista.

No te desanimes. Usted es claramente capaz de desarrollar software; ¡Lo has estado haciendo por más de 20 años!

Primero, déjame repetir lo que dijo Jessica Su en su respuesta. Para la mayoría de las personas que han estado en la industria por un tiempo, los algoritmos completos y las clases avanzadas de estructuras de datos de la universidad son un recuerdo lejano. A menudo lamento a los compañeros de trabajo que te entrevistemos en Fibonacci Heaps, pero una vez que eres admitido, terminas usando nada más que listas y mapas. Así que definitivamente revise sus algoritmos, tome un libro de entrevistas técnicas y resuelva algunos problemas de práctica.

La buena noticia es que la mayoría de las entrevistas tecnológicas, ya sea de Google, Netflix o Apple, son muy predecibles. Nos preocupamos por su conocimiento de las estructuras de datos básicos y los algoritmos que las rodean. Y la mayoría de los problemas de la entrevista se pueden reducir a una combinación de algoritmos básicos en torno a estructuras básicas. Entonces, una vez que esté súper familiarizado con los componentes básicos, es mucho más fácil reducir los problemas aparentemente complejos a algo más manejable.

Y, por último, el hecho de que no haya podido resolver un problema por completo en 20-30 minutos no significa que lo haya hecho horriblemente. Cuando doy entrevistas, me importa tanto la solución final como los pasos que tomaste para llegar a la solución. Muchas veces, estoy más impresionado por un candidato que no tenía una solución lista para un problema, y ​​en su lugar trabajó para encontrar una solución aplicando los primeros principios. Y luego, una vez que tenga un algoritmo en mente, ¿puede traducirlo a código? Una advertencia en la que caen muchos entrevistados es que intentan pasar inmediatamente del planteamiento del problema a la solución más eficiente posible. Y se estancan tratando de resolver las optimizaciones, y nunca terminan ni siquiera escribiendo una solución simple que al menos funcione.

Un buen entrevistador estructurará las cosas para que la dificultad del problema aumente progresivamente, y hay muchas posibilidades de que un candidato obtenga crédito parcial, por así decirlo. El tipo de entrevistas que doy, comenzaré con un enunciado del problema muy simple, como encontrar números duplicados en una matriz, y luego modificar el problema de algunas maneras interesantes, como hacer que el conjunto de datos sea muy grande, por lo que tendría que usar Múltiples máquinas. Entonces, ¿qué pasa si las máquinas no son confiables y son propensas a fallar, etc., etc. Y seguiré haciendo preguntas hasta que se acabe el tiempo o el candidato haya llegado a un callejón sin salida? Entonces, si terminas en una situación de entrevista como esa, es perfectamente razonable no “terminar” a tiempo.

Estoy seguro de que aquí hay muchas respuestas excelentes, pero creo que no tiene problemas con el concepto, sino que canaliza sus pensamientos en acción en un tiempo límite.

Adivina lo que descubrí hace un par de días. Hay un sitio web que me gustó mucho y no se trata de aprender programación o de convertirte en un campeón en algoritmos o estructuras de datos.

Se trata de entrenarlo para pensar rápido y dejarlo de la manera más correcta posible.

CodinGame – La programación es divertida

Coding Game tiene muchos tipos de desafíos, pero estoy hablando particularmente del Choque de Código, que es una forma increíble de resolver un pequeño problema muy pequeño en un tiempo determinado de 5-10 minutos y pone su proceso de pensamiento y lógica en la dirección correcta.

No te prometo ningún resultado, pero prueba esto por una semana. Estoy seguro de que verá muchas mejoras.

Tenga en cuenta: no soy un promotor de este sitio web. Simplemente soy uno de los usuarios.

Mi blog es diferente: http://techieme.in

Si esto es lo que van a preguntar los entrevistadores, desafiarlos como algunos sugieren que no será útil.

Hay libros que ayudarán (Cracking the Coding Interview, etc.). Hay sitios con preguntas de entrevistas en las que puedes practicar. Pero la clave es “¿puedes demostrar que puedes pensar algorítmicamente?”, Donde esto último realmente significa que estás pensando de manera creativa y sistemática. Para la parte de “demostrar”, lo más importante es pensar en voz alta. No te sumerjas en una reflexión silenciosa; verbaliza lo que estás pensando.

Para la parte creativa y sistemática, recomiendo leer los libros de Programming Pearls de Jon Bentley. Son viejos pero eternos, y te darán muchas buenas ideas (de todos modos, son excelentes para leer).

AFAIC hay tres algoritmos que necesita comprender bien y poder aplicar: caminar por el árbol, mapear / reducir y ordenar rápidamente. El primero lo ayuda a abordar los problemas del árbol (obviamente), el segundo lo ayuda a escalar y el tercero lo ayuda a pensar en cómo dividir (dividir y conquistar). Entonces también debería estar familiarizado con la programación dinámica (hay un tutorial aquí: Tutorial para la programación dinámica). Estos te llevarán muy lejos. Saber más ayudará, pero se sorprenderá de lo lejos que puede llegar con solo estos.

Veo algunas respuestas excelentes aquí, pero siento que necesito señalar que en algunos casos los entrevistadores simplemente quieren una excusa para evitar contratar a un trabajador mayor. Los trabajadores mayores cuestan más, tanto en salario como en beneficios, y existe la percepción de que los jóvenes no se sentirían cómodos trabajando para ellos.
Conozco a un tipo que detuvo su entrevista en seco cuando el joven entrevistador le hizo preguntas realmente arcanas sobre C ++. El entrevistado dijo: “Esto me suena a discriminación por edad, y si persiste en esta dirección, voy a demandar”. Consiguió el trabajo. 🙂 Y lo hizo bastante bien en eso.
NO sugiero adoptar ese enfoque, pero vale la pena señalar a sus entrevistadores que su curso de algoritmos fue hace 20 años, y ha descubierto en 20 años que las personas rara vez usan mucho de su curso formal. Sí, DEBE revisar el material en preparación de todos modos, pero eso no hará que las cosas estén tan frescas en su mente como en la mente del joven interrogador.
Practique la codificación en una pizarra blanca bajo presión de tiempo. Haz que un amigo desempeñe el papel de verdugo, quiero decir, entrevistador. Es una parte cruel de las entrevistas, pero un mal necesario, ya que muchas personas realmente no pueden programar bien, a pesar de tener un buen CV.

“Más de 20 años de experiencia”: ¡ese es su problema! Tu nuevo graduado típico tomó una clase de algoritmos hace un par de años. Pero para usted, probablemente hayan pasado veinte años desde que tuvo que codificar algoritmos de clasificación sin usar una biblioteca. No te convierte en un mal programador, solo significa que necesitas revisar un libro o una clase en línea y refrescar tu memoria.

More Interesting

¿Puede un estudiante de ECE en el NIT Trichy obtener una pasantía en Microsoft / Google? ¿Está restringido solo a los estudiantes de CSE?

Cómo prepararse para una entrevista técnica inteligente como un recién graduado de B.Tech

¿Cuál puede ser una forma de cambiar a la industria del cine ya que los buenos institutos para la dirección de películas como FTII o SRFTI tienen asientos muy limitados?

¿Elegir Flask sobre Django reducirá mis opciones mientras solicito trabajo?

Vivo en París y estoy buscando trabajo en la industria cosmética, pero soy rechazado de todas partes. ¿Qué tengo que hacer?

No soy un graduado, pero estoy certificado en CCNA y CCNP. ¿Todavía puedo conseguir un trabajo?

Me siento sutilmente intimidado por mi jefe y quiero renunciar. ¿Cuál puede ser la mejor razón para dejar de fumar?

¿Sería fácil conseguir un trabajo de TI en Nueva Zelanda para una persona de Myanmar?

Si tomo un descanso en mi carrera, ¿obstaculiza mis perspectivas de conseguir el próximo trabajo?

¿Cómo debo hacer para obtener una carrera en el espacio de tecnología educativa?

Soy un Contador Público recientemente calificado que aspira a desarrollar una carrera en los mercados de valores, ¿cuáles son mis opciones ya que no tengo experiencia previa?

¿Por qué el porcentaje de aprobación para el papel CT4, actuarios, es tan bajo en la India en comparación con el Reino Unido?

¿Hay algún uso de los motores Stirling en la industria del automóvil?

¿Qué tipo de trabajos puedo obtener con una licenciatura en periodismo y comunicaciones de masas?

¿Cuánto tiempo puede un novato de programación obtener un trabajo de desarrollador de back-end?