Red de conocimiento informático - Material del sitio web - Cómo prepararse para entrevistas con empresas de Internet (relacionado con el algoritmo)

Cómo prepararse para entrevistas con empresas de Internet (relacionado con el algoritmo)

Libro: "Introducción a los Algoritmos" Este es un libro extenso que mucha gente no puede terminar. No he terminado de leerlo. Ha permanecido conmigo durante muchos años y definitivamente es un gran libro que leo con frecuencia. Cada vez que lo mires, encontrarás algo nuevo que ganar. Por ejemplo, no sabía antes que existe un algoritmo con una complejidad promedio de O(n) para encontrar K dígitos o la mediana. Después de ver materiales de referencia en otros lugares, me di cuenta de que hay una sección especial sobre esto en "Cálculo de derivados". Básicamente lo leí intensivamente una vez como estudiante universitario, y luego nuevamente intensivamente como estudiante de posgrado de primer año, y finalmente lo terminé aproximadamente. Pero, de hecho, todavía no he terminado de leer muchas partes teóricas, así como parte de la teoría de grafos. La recomendación personal es comenzar con algo simple y seleccionar algunos conocimientos familiares que se centren en la estructura de datos como punto de partida. Los ejercicios de este libro son muy importantes. Si tienes tiempo y puedes terminarlos todos, definitivamente tendrás habilidades mágicas. De hecho, centrémonos en la segunda parte (clasificación), la tercera parte (estructura de datos), la cuarta parte (diseño avanzado, básicamente me concentro en programación dinámica y codiciosa) y la quinta parte (estructura de datos avanzada, árbol B). y montón binomial, conjunto de diferencias de unión), Parte 6 (Algoritmo gráfico, la parte de flujo máximo es difícil, puede dominarla según la situación). Estas partes pueden comenzar con el algoritmo en sí y comprender todo el pseudocódigo. Debido a que la introducción a los algoritmos es muy detallada y tiene todos los detalles, básicamente no es demasiado difícil. Se recomienda que todos dominen la prueba matemática, pero para sorpresa o primera vez, puede mirarla de forma selectiva. Lo leí una y otra vez antes de leer la prueba. La primera vez que lo vi, básicamente me lo salté. Sin embargo, ¡las pruebas y los ejercicios son la esencia! Espero poder compensarlo si tengo tiempo. Este libro "La belleza de la programación" y "El desafío de la programación" es definitivamente un libro mágico que ha elevado el banco de preguntas de entrevistas de todas las empresas chinas, o de algunas empresas perezosas, a un nivel superior. Cuando Baidu conoció a mi hermano mayor, él directamente le dio la respuesta óptima a una pregunta. Sin embargo, el entrevistador obviamente no conocía la solución óptima y siguió guiando a mi hermano mayor para que respondiera la cuarta solución de este libro. jeje. El libro es muy bueno. No es difícil verlos a todos. Si dices algo desagradable, puedes memorizarlo y, créeme, ¡básicamente funcionará! Por ejemplo, ¿cuántos ceros hay después de n!? Creo que encontrarás esta pregunta en entrevistas o exámenes escritos este año. Puede considerar la "Programación de desafíos" usted mismo. Esto está completamente dirigido a la competencia ACM, pero también es bueno echar un vistazo a las preguntas. "Programming Pearls" es el libro sagrado de la industria. Simplemente termina todos los ejercicios. De hecho, son todas cosas pequeñas, pero básicamente ponen a prueba tu capacidad para resolver problemas paso a paso. Personalmente, creo que el más utilizado es el mapa de bits para clasificación o deduplicación, y para ampliarlo es el filtro de floración, que leí en este libro en ese momento. "Manual técnico de algoritmos" Este libro parece aparecer rara vez. El libro es muy sencillo y el código está muy bien escrito. De hecho, es básicamente la implementación de algoritmos básicos y estructuras de datos. Sin embargo, lo bueno de esto es que el código está tan bien escrito que básicamente, si lo lees una vez, definitivamente puedes memorizarlo. Los conceptos básicos de la entrevista son muy importantes. Básicamente, en cada prueba escrita o entrevista se probará un pequeño programa de menos de 100 líneas. Por ejemplo, dado un árbol y un nodo x, es necesario encontrar los nodos posteriores de x en la secuencia transversal en orden del árbol, implementación no recursiva. Este tipo de preguntas son muy simples, pero no mucha gente las escribe correctamente. "Análisis de código fuente STL" y "Biblioteca estándar C" no son gruesos. Es muy cómodo volver a verlo. En particular, eche un vistazo a cada tipo de iterador de estructura de datos en STL y cómo implementarlo en los Libros Rojo y Negro. Biblioteca estándar de C, las más comunes, como strcpy() y memcpy(), ¿cuál es la diferencia? Especialmente STL, después de leerlo, todavía puedo tener cierta comprensión de los genéricos. "Programación experta en C", "C eficaz", "Exploración en profundidad del modelo de objetos C" El primer libro es relativamente simple y puede leerse como un libro Bagua. Los dos últimos libros en realidad no tienen mucho que decir. De hecho, ambos son libros excelentes reconocidos por la industria. No tiene sentido que lo repita. Sin embargo, es cierto que la investigación se basa básicamente en las cosas de estos pocos libros. Básicamente, los dos últimos libros se centran principalmente en algunas instrucciones sobre objetos c, especialmente aquellas relacionadas con el polimorfismo.

"Matemáticas concretas" y "Combinatoria" en realidad pueden considerarse libros sobre autocultivo. Lo leí cuando tuve más tiempo. Por puro asalto, cualquiera puede omitirlo. Pero es realmente útil leer. Por ejemplo, puede hablar con el entrevistador sobre la solución estructural del anillo de Joseph (creo que esta pregunta se encontrará en el 80%) y enviar la fórmula directamente sin escribir código de simulación. Lo mismo ocurre con las "Matemáticas combinatorias". Muchas pruebas escritas suelen tener algunas pequeñas preguntas intelectuales. Sin embargo, de hecho, las preguntas comunes se pueden resolver sin leer este libro. Por lo tanto, estos dos libros son sólo de referencia. Si estás interesado, puedes leerlo. "Análisis del código fuente del kernel de Linux" "Programación avanzada del entorno Linux"... Si tiene la oportunidad, sería mejor echarle un vistazo. Porque muchas empresas examinarán los conocimientos relacionados con Linux. Al menos necesita conocer algunas secuencias de comandos, algunos comandos simples de Linux y expresiones regulares. Si puede hablar sobre el código fuente del kernel o el desarrollo de controladores, al entrevistador definitivamente le gustará más. Conocimiento: c amp; c Primero, debes conocer la diferencia entre c y c. Los que se prueban comúnmente incluyen el uso de const y el uso de algunas palabras clave poco comunes como extern y static. La diferencia entre estructura y clase. El problema de la alineación de palabras dentro de una clase, es decir, qué tan grande es una clase. ¿Y qué tan grande es una clase vacía? Las funciones virtuales y el polimorfismo son obviamente el foco de atención. Por ejemplo, ¿cuándo es necesario escribir el destructor como una función virtual y si el constructor puede ser una función virtual? La diferencia entre int a[10]; a y amp; No estoy familiarizado con java. Pero básicamente, definitivamente se le evaluarán algunos conocimientos relacionados con la máquina virtual, así como GC y otros conocimientos. Entonces, los programadores de Java que generalmente son contratados preguntarán mucho sobre la programación multiproceso, ¡así como sobre hadoop! Este es definitivamente el punto clave, y Taobao definitivamente pregunta esto. Sistema operativo Depende de los requisitos reales del trabajo. Definitivamente se preguntarán las diferencias entre el proceso básico y el hilo ==. Si los requisitos son mayores, se harán muchas preguntas sobre programación multiproceso. Algunos conocimientos básicos, como el punto muerto de contención y algunos algoritmos de programación de procesos. El núcleo reciente parece utilizar el algoritmo de programación CFS. Programación de Shell, cómo leer la pila de programas, escribir algunos programas de lectura de volcado de núcleo, etc. Estructura de datos Básicamente, toda clasificación requiere poder escribir. Todas las operaciones relacionadas con árboles requieren versiones no recursivas. Las imágenes generalmente no se prueban mucho. Algoritmo de inundación y así sucesivamente. Encuentra la mediana. Es mejor dominar el árbol B y el libro rojo-negro. No es necesario saber escribir, basta con poder divagar. KMP, ¡es muy probable que esto sea probado! Y es realmente difícil de entender. Si no funciona, simplemente memorízalo. Ja ja. Red Esto es en realidad relativamente básico. Mi conocimiento personal sobre redes no es muy bueno. Pero la base de varios protocolos, cuántos apretones de manos, si la implementación API de algunos sistemas operativos es simple o dúplex, usando TCP o UDP. Mi red personal se basa exclusivamente en RP. Base de datos La base de datos es muy importante. El SQL básico es definitivamente imprescindible. La pregunta más común es la diferencia entre unión interna y unión externa. MySQL es el punto clave y básicamente muchas empresas hacen esta pregunta. Luego, si Baidu habla demasiado, le dirá algo sobre el motor MySQL. No los entiendo muy bien. Si puedes prepararte, o si realmente haces esto, puedes concentrarte en preparar más. ¡El procesamiento de datos a gran escala es definitivamente el foco! Y no es una rama temática sistemática en sí misma. Sin embargo, básicamente varias grandes empresas preguntarán sobre esto. Se recomienda leer esos artículos en Google primero. Hay un artículo sobre Page Rank y luego parece haber varios artículos sobre Map Reduce. Mesa grande o algo así. Recomendar una dirección de sitio web. Este artículo parece haber sido reimpreso, pero ya no se puede encontrar la dirección de origen que encontré antes. Las ideas básicas para abordar este tipo de problemas son hash, reducción de mapas, mapas de bits, etc. Por cierto, se recomienda echar un vistazo a la clasificación exterior y al árbol de perdedores relacionado. Estos son algunos problemas típicos del procesamiento de datos a gran escala. En realidad, dominarlos es suficiente. Esta pieza se parece un poco a una técnica para matar dragones, especialmente para los estudiantes. Básicamente, nadie tiene la oportunidad de implementar estos códigos.

Sin embargo, no hay manera, a estas empresas simplemente les gusta hacer exámenes. Después de leer ese blog y luego buscar información por tu cuenta, eso es básicamente suficiente. Todo es inseparable de ello y estas cosas no pueden ser tan difíciles de probar. Recomiendo un blog. El autor recopiló 100 preguntas de entrevistas y proporcionó códigos para todas ellas. Lea todo esto. Básicamente, muchas entrevistas y pruebas escritas tienen estas preguntas originales. Recomiendo la serie Today's Thinking en Top Language, que se publicó hace varios años. Es muy útil ver el proceso de pensamiento de Daniel. Ojalá pudiera pensar más y mirar la respuesta. Tenga en cuenta que el Grupo Google parece estar bloqueado a veces. También escaneé la sección del banco de preguntas de Germination.com. Hay muchos más que no puedo recordar ahora.