Para codificar entrevistas en empresas de primer nivel como Google, Facebook, etc., ¿es C un lenguaje adecuado?

A veces. No recuerdo ningún problema de codificación en dos décadas de entrevistas para puestos de software del sistema donde ‘C’ no era una buena opción, si no la mejor, aunque en muchos de esos puestos hice la mayor parte de mi programación usando otros lenguajes. Los problemas más complejos tienden a discutirse en términos de diseño, no de implementación, que no encajaría en un espacio de entrevista de 30 a 60 minutos.

Su caja de herramientas debe incluir ‘C’: eventualmente deberá pegarse en una biblioteca de bajo nivel, descubrir cómo funciona realmente un componente de código abierto escrito en él o modificar ese software libre. Debe incluir un lenguaje orientado a objetos como C ++ o Java con bibliotecas ricas para no reinventar cosas, herramientas excelentes para que los programas más grandes sean prácticos y un buen rendimiento / paralelismo para limitar situaciones en las que necesita escalar horizontalmente entre nodos. Necesita un lenguaje de secuencias de comandos como Perl o Python con un buen soporte de biblioteca para el procesamiento de texto ad-hoc, herramientas triviales y programas de pegado en entornos de prueba. El manejo de la dependencia de Make lo hace muy útil para proyectos de sistema, y ​​SQL es la lengua franca para las bases de datos.

Eso le permitirá elegir las herramientas adecuadas para la mayoría de las situaciones, tanto de trabajo como de entrevista.

También permitirá una productividad casi inmediata en lenguajes similares porque estás familiarizado con los patrones y conceptos que ves, aunque te tomará un tiempo usar idiomáticamente nuevos idiomas.

C se está convirtiendo rápidamente en un lenguaje inadecuado para cualquier cosa. Tiene muchos defectos. Entonces, ¿qué preguntan la mayoría de los entrevistadores (programadores de todos modos)? Te preguntan si puedes ver las fallas en C. ¿Por qué molestarse? Solo arreglé el maldito lenguaje.

Pero esa no es la verdadera razón por la que debe evitarse C. Es inseguro, y la seguridad se ha convertido en el elefante en la sala que los programadores de C intentan ignorar.

Sí, necesitamos arquitecturas de CPU más seguras con seguridad incorporada, no atornillada. Pero con C es demasiado fácil socavar un sistema escrito en C.

Al principio, la actitud de los programadores era: bueno, queremos libertad para hacer lo que tenemos que hacer, así que nada debería restringirnos. Eso es apropiado si su computadora está aislada de todo lo demás, tal vez para cálculos técnicos. Pero, con mucho, la mayoría de las computadoras se utilizan para la conectividad y los sistemas de usuario final, y estos deben ser realmente seguros.

Entonces, la confianza que el programador consideraba se volvió ingenua, luego estúpida, ahora es negligente y en el futuro debería ser negligente penalmente. No más excusas por parte de los diseñadores de idiomas de que depende del programador.

Si, absolutamente.

Confiar en esas bibliotecas es una muleta. Claro, son agradables cuando escribes una aplicación de alto nivel, pero simplemente no se aplican en el kernel y no demuestran tus habilidades de CS en absoluto.

Ahora, implementar esas mismas bibliotecas en C es una buena demostración de esas habilidades.

No, ‘C’ ya no es un lenguaje adecuado para entrevistas. La única excepción que se me ocurre es si estás entrevistando para un puesto que explícitamente requiere experiencia ‘C’.

El objetivo de una entrevista generalmente es demostrar su resolución de problemas, demostrar su conocimiento de algoritmos y generar cómodamente un código razonable.

Si está escribiendo en ‘C’, probablemente generará una gran cantidad de placa de caldera adicional para resolver problemas estándar, o generará un código algo oscuro. Si su entrevistador no está familiarizado con ‘C’ (que muchos entrevistadores más jóvenes no conocerán), pueden tener problemas para seguir su trabajo. Perderás tu tiempo y el de ellos con actividades que no son necesarias y que no son relevantes para lenguajes más comunes, como la administración explícita de memoria.

Si usa ‘C’, tardará más en generar los mismos resultados y puede estar trabajando en un lenguaje que el entrevistador no conoce bien. Esas son dos grandes razones para evitar usar ‘C’ en sus entrevistas.

PD: codifiqué en ‘C’ durante ~ 15 años. Me gusta el idioma, pero creo que actualmente hay formas más rápidas y fáciles de codificar la mayoría de las cosas.

¿El trabajo es escribir en C?

¡Si no, entonces probablemente no tenga sentido probar el conocimiento en él! Del mismo modo, ¡no tiene sentido probar las habilidades PHP de alguien si van a trabajar en Java!

Elija los idiomas en los que su equipo escriba y que se espera que usen. De lo contrario, no es una prueba realmente.

Según mi experiencia en la entrevista, probablemente debería evitar usar C si no es necesario. Especialmente para la entrada a la posición de nivel medio, tienden a darle preguntas de algoritmo que tomarán mucho más tiempo para responder, como usted dijo, pero el tiempo de la entrevista se limita a quizás 60 minutos por dos preguntas.

En este momento, puedo pensar en dos senerios que puedes usar C en una entrevista:

  1. Es una entrevista de trabajo C requerida, relacionada con el sistema o el hardware.
  2. El entrevistador dice que está bien escribir pseudocódigo.

More Interesting

Soy ingeniero de software y la entrevista será puramente técnica. ¿Qué me puede dar una ventaja sobre otros candidatos en una entrevista?

¿Cómo es una típica entrevista de ingeniería de software con usted?

Dado un entero x, ¿cómo escribo el código para verificar si x puede escribirse como una potencia n ^ m (x, myn son positivas)?

¿De dónde obtienen la mayoría de los entrevistadores sus preguntas de entrevistas técnicas de informática?

¿Cómo puedes encontrar las 20 mejores consultas del día en Google?

¿Se está preparando una sexta edición de Cracking the Coding Interview? Si es así, ¿qué podemos esperar de él?

¿Importa la experiencia en la programación de entrevistas?

¿Qué preguntas se hacen durante la entrevista telefónica de Amazon para un puesto en Hyderabad?

Dada una matriz de números y una constante k, ¿minimizar el tamaño de la matriz con las siguientes reglas para eliminar elementos? (Más detalles en la primera respuesta).

En una entrevista de ingeniería de software, ¿qué debo esperar durante un panel par?

Cómo no estar nervioso por una entrevista técnica

¿Aproximadamente cuánto tiempo se espera que pasen los candidatos para trabajos de programación en tareas de programación para llevar a casa?

¿Cuál es el proceso de entrevista de Amazon y qué tipo de preguntas hacen cuando se presenta como nuevo?

¿Cuáles son las mejores preguntas interesantes para la entrevista que se le hacen a un ingeniero en electrónica y comunicaciones?

¿Qué tipo de preguntas de entrevista hace MICA para el programa CCC?