¿Quiere recibir una oferta de una gran fábrica después de la graduación? ¡Tienes que poseer completamente estos sistemas de conocimiento informático!


Autor | Guía de programación Norte

Producido | Guía de programación (ID: cs_dev)

Imagen de la cabeza | Descarga de CSDN de Visual China

Prefacio

¿Por qué de repente quieres escribir sobre este tema?

Recientemente, muchos lectores nuevos se han preguntado en segundo plano: ¿Cuál es mejor para encontrar trabajo si estudias Java o C ++ en la universidad ?, ¿es mejor aprender front-end o back-end ?, ¿debería aprender Vue o React? . .

Como si viera cómo me veía entonces, sentí la necesidad de escribir un artículo aparte y hablar como un recién graduado de informática.Creo que lo que deben aprender los estudiantes de informática en cuatro años de universidad y cuáles son los puntos clave.

En los mismos cuatro años de universidad, ¿por qué algunos estudiantes pueden convertirse en recolectores de ofertas después de graduarse? Todos los tipos de SP y SSP son suaves. Algunos estudiantes han escrito muchos sitios web en la escuela. Tienen mucha experiencia en proyectos, pero han encontrado uno. El trabajo es dificil.

No se puede decir que este último no estudió seriamente, quizás la dirección del esfuerzo sea incorrecta.

No hay mucho que decir, vayamos directamente al tema.

texto

Los límites del conocimiento humano se han expandido continuamente. Como dice el refrán, el aprendizaje es infinito. Esto también se aplica al campo de la informática. La computadora en sí es una ciencia artificial, no una ciencia natural.

Cada año, incluso cada mes, se lanzan constantemente nuevos marcos de programación. No puede terminar de aprender después de haber aprendido la calvicie y no hay necesidad de aprenderlos uno por uno.

Y encontrará que muchos fabricantes de primer y segundo nivel utilizan su propio conjunto de elementos, como descubrimiento de servicios, RPC, KV, DB, colas de mensajes, registros, supervisión, etc.

Por tanto, al momento de contratar por parte de estas grandes empresas, no te colgarán porque no han aprendido un marco determinado, de todas formas, hay que volver a aprender muchas cosas.

Prestarán más atención a su conocimiento básico, experiencia de resolución de problemas e inteligencia, que son más versátiles.

En cambio, algunas pequeñas empresas pueden requerir que conozca Spring, Vue, Redis ... estos marcos o componentes.

Tencent JD

Ali JD

Un cierto JD de subcontratación

Los anteriores son el JD de contratación (descripción del trabajo) de Tencent, Alibaba y una empresa de subcontratación. Obviamente, Tencent Alibaba está interesado en habilidades básicas de programación sólidas y capacidad de aprendizaje rápido, lo que significa que hay potencial para el cultivo.

La empresa de subcontratación requiere que conozca la base de datos xx, Spring y similares. No evalúes cuál es mejor, pero si quieres ir a BAT, ¿es un atajo para al menos mejorar tu habilidad contra su JD?

Aquí, divido aproximadamente el conocimiento de la programación de computadoras en tres partes:

  • Conocimiento básico

  • Conocimiento específico del dominio

  • Marco y habilidades de desarrollo

El conocimiento básico se refiere a los ingenieros de software que participan en cualquier dirección que deben dominar, como estructuras de datos, algoritmos y sistemas operativos.

El conocimiento específico del dominio es el conocimiento que necesitas dominar cuando estás involucrado en una determinada dirección de subdivisión. Por ejemplo, necesitas dominar los gráficos para ser un motor de juego; para ser un front-end, necesitas dominar el principio de renderizado del navegador y los tres front-end; los ingenieros de algoritmos necesitan más conocimientos matemáticos .

Después de todo, hay muchos tipos de computadoras, y debes elegir una dirección de subdivisión para estudiar. Si aprendes todo, solo serás bueno para nada (excepto para los grandes.

Conocimiento básico

Ahora el gran entorno es relativamente impetuoso. Pocas personas están dispuestas a concentrarse en lo básico y les gusta aprender Python directamente, participar en el aprendizaje automático, escribir juegos flash y convertirse en un centro comercial.

Cuando busco trabajo, siempre quiero leer las entrevistas y resumir los resultados rápidos.

Pero como un excelente estudiante de ciencias de la computación, ¿cómo puede participar en varios marcos de programación (excepto en la construcción de marcos) y si aprender SpringBoot o SSH?

¿No le gusta dedicar tiempo a algoritmos y temas básicos? En términos de utilitarismo, las recompensas serán mayores.

Además, en el campo de la informática, muchas teorías básicas no están muy avanzadas y podemos dominar el conocimiento básico con nuestros esfuerzos.

1. Matemáticas

En primer lugar, las matemáticas enumeradas aquí no son para parecer de alto nivel, sino para sufrir la pérdida de las matemáticas.

Si eres autodidacta y cambias de profesión para convertirte en programador, ciertamente no recomendaría matemáticas, porque la alta probabilidad de cambiar de profesión es aprender Java, front-end, etc. Básicamente no hay ningún requisito para las matemáticas.

Pero este artículo está dirigido principalmente a estudiantes que aún están en la universidad, esta parte de los estudiantes puede hacer algoritmos (CV, PNL, etc.), motores de juegos, codificación de seguridad de la información, etc.

Estas direcciones tendrán mayores requisitos para las matemáticas. En el campo de la informática, las ramas matemáticas como la generación de líneas, la teoría de la probabilidad y la estadística son relativamente importantes. Las computadoras son inherentemente discretas.

Por ejemplo, en el aprendizaje automático o la minería de datos, el álgebra lineal se utiliza a menudo para reducir la dimensionalidad de los datos. Muchos problemas pueden eventualmente transformarse en la resolución de ecuaciones lineales.

Entonces, para evitar quedarse atascado en las matemáticas cuando quiera ir en estas direcciones en el futuro, debe estudiarlo cuando esté en la clase de matemáticas en su primer y segundo año.

Cuando se utilice el libro, lo odiará menos. No crea que no es fácil aprender ahora que es inútil. Lo lamentará cuando lo necesite. (Lágrimas silenciosas de ignorancia derramadas ┭┮﹏┭┮

¿Qué? ¿Dijiste que definitivamente harás la dirección del desarrollo en el futuro?

Es cierto que puedes poner la prioridad de las matemáticas un poco más tarde. Realmente no se usa mucho, pero siempre debes escuchar con atención cuando estás en clase de matemáticas. No es perjudicial sacar una nota alta. ¿Qué día quieres volver a unirte al ejército algorítmico?

2. Lenguaje C

Quizás se esté preguntando, aquí está el conocimiento básico, ¿por qué debería enumerar un lenguaje de programación por separado?

Porque en mi opinión, no existe un lenguaje C más adecuado para entender los sistemas informáticos.

Los sistemas operativos y arquitecturas que mencionaremos más adelante son muy adecuados para comprender o practicar en lenguaje C.

Además, el lenguaje C en sí tiene muy pocas características del lenguaje, pero no es fácil de aprender bien. Muchas personas encuentran difícil el lenguaje C. ¿Cuál es la dificultad? Recordando cómo me sentí durante mi primer año:

  • Biblioteca estándar simple, casi sin estructuras de datos y algoritmos disponibles, todo debe hacerlo usted mismo

  • Los punteros son difíciles de entender y usar

  • Necesita comprender el ensamblaje, la vinculación, la carga, la memoria, etc. para hacer un buen uso del lenguaje C

Desafortunadamente, estas cosas son parte del conocimiento de los sistemas informáticos, por lo que utilizar el lenguaje C como la forma más eficiente de aprender el conocimiento de los sistemas informáticos.

Es realmente difícil imaginar usar Java o Python para explicar la memoria a otros, porque estos lenguajes son más abstractos que C, lo que significa que están más lejos del sistema informático.

En la lista de lenguajes de programación TIOBE, el lenguaje C casi siempre ocupa las tres primeras posiciones y, naturalmente, su posición está fuera de toda duda.

Ranking TIOBE-2020

Y casi muchas de las cosas que usa en su desarrollo están escritas en lenguaje C, Linux, Nginx, Redis, MySQL, Git ... Tal vez desee explorar los principios y leer el código fuente de estos software de código abierto. Entonces, el lenguaje C es también su navaja suiza esencial.

El estudio en profundidad del lenguaje C, ser capaz de comprender el principio de ejecución subyacente de la computadora, es un lenguaje excelente para comprender el mecanismo operativo del programa y no tiene paralelo.

Aquí, tengo que citar el resumen más clásico del lenguaje C:

Cualquier lenguaje inferior a C no es suficiente para abstraer completamente un sistema informático; cualquier lenguaje superior a C se puede implementar en C.

¡Esta es realmente una evaluación muy alta y pertinente!

Entonces, para las clases de informática, ya sea que esté haciendo front-end o back-end, algoritmo o desarrollo, se recomienda el lenguaje C para que estudie mucho. Este es un lenguaje irrelevante para la dirección, ¡es la base!

3. Sistema operativo

Los IDE que programamos y los programas que escribimos deben ejecutarse en el sistema operativo. No es exagerado decir que el sistema operativo es la piedra angular del software de computadora.

Cuando el programa se ejecuta, necesita crear un proceso, que involucra la gestión de procesos del sistema operativo; escribir un programa necesita definir variables y almacenar datos, lo que a su vez involucra memoria, correspondiente a la gestión de memoria; a veces también necesitamos leer y escribir archivos, que es inseparable Abierto para tratar con el sistema de archivos; debe aprender a usar bloqueos, variables de condición y secciones críticas para asegurarse de que el programa no se confunda durante la ejecución simultánea.

Las llamadas al sistema son inseparables de la lectura y escritura de archivos y la asignación de memoria.

Y cuando realmente comience el proyecto, encontrará que muchos problemas están estrechamente relacionados con el sistema operativo. Si no comprende el sistema operativo, ni siquiera puede analizar la causa del problema.

Por ejemplo, hace algún tiempo aparecimos en el marco basado en coroutine (libco), usando bloqueos multiproceso para hacer un punto muerto accidental de exclusión mutua síncrona, y un análisis posterior encontró la razón:

Dado que la corrutina se implementa en la capa de aplicación, múltiples corrutinas en un hilo no son perceptibles para el sistema operativo:

Modelo de rutina

Luego, cuando un protocolo llamado A está bloqueado e inicia una solicitud de E / S de red, se cambiará a otro protocolo B en este momento, y el protocolo B solicitará el bloqueo nuevamente.

En este momento, el sistema operativo pensará que el bloqueo ya está activado, por lo que suspenderá el hilo correspondiente a la corrutina B a la cola de espera. De esta manera, la corrutina A nunca se ejecutará y el bloqueo no podrá liberarse, lo que dará como resultado un punto muerto.

La solución también es muy simple, que consiste en configurar el bloqueo como un bloqueo reentrante. Reentrante significa que el mismo hilo solicita el mismo bloqueo varias veces sin provocar un bloqueo. De esta forma, cuando la corrutina B vuelva a solicitar el bloqueo, el sistema operativo pensará que el hilo donde la corrutina B ya está sosteniendo el bloqueo, regresará directamente y continuará la ejecución.

En resumen, escribimos programas que interactúan con el sistema operativo todo el tiempo, no hay razón para no aprender bien.

4. Principio de compilación

El principio de compilación puede ser el mínimo con el que tenemos contacto, y puede sentir que no tiene que crear un nuevo lenguaje de programación y aprender el principio de compilación.

¿De qué sirve aprender los principios de la compilación?

Mirará estos lenguajes de programación desde una perspectiva superior y ya no verá la gramática superficial, sino que pensará en la implementación detrás de la gramática.

Este sentimiento es muy completo, al igual que usted comprende el sistema operativo y la arquitectura, comprenderá cómo se ejecuta un programa con un doble clic del mouse. Este sentimiento de dominar todos los detalles y la minuciosidad es realmente maravilloso, no me crea Ve a intentarlo.

¡habla Inglés!

¿Qué puede hacer después de aprender los principios de la compilación?

Cuando termine de aprender la máquina de estados finitos , encontrará que las expresiones regulares que solían ser muy impresionantes parecen poder implementarse con DFA y NFA. La idea de una máquina de estados se puede utilizar en muchos lugares de la programación.

Por ejemplo, para analizar el protocolo HTTP, si no ha aprendido la idea de una máquina de estado, puede analizar línea por línea if / else. La parte más problemática aquí es que si / else necesita recibir todos los campos de encabezado HTTP por adelantado, entonces juzgue. Sabemos que HTTP se basa en TCP y TCP se está transmitiendo, por lo que es probable que lo reciba en grupos de varios caracteres. En este momento, es difícil leer si / else está escrito.

El código escrito en una máquina de estado es muy elegante. La transición de estado se rige por reglas y es muy conveniente juzgar un personaje después de recibirlo.

Después de continuar estudiando el análisis de sintaxis, dominará la idea muy importante del análisis de descenso recursivo . Puede utilizar el descenso recursivo para implementar rápidamente las cuatro calculadoras aritméticas.

Si no usa la recursividad para descender, es posible que primero deba convertir la expresión infija al sufijo y luego evaluarla. Esto fue escrito en nuestra clase de estructura de datos de primer año. En ese momento, era un poco problemático. Más tarde, después de aprender los principios de la compilación, usé el descenso recursivo para reescribirlo nuevamente, con docenas de líneas de código por todas partes.

Hay otro tipo de escenario que se utiliza mucho en el desarrollo real. Por ejemplo, empresas de comercio electrónico como Taobao y Jingdong tienen muchas reglas de marketing, como reducción total, reducción directa, tienda cruzada, etc. Es imposible escribir tales reglas. En el código.

¿Cómo se hace eso?

Generalmente, se implementa un sistema de configuración y se diseña un DSL (lenguaje específico de dominio) para expresar estas reglas. Las reglas se pueden configurar directamente en el sistema, que se pueden modificar fácilmente. Entonces, ¿cómo analizar las reglas definidas por el DSL en el código? Esto requiere escribir un analizador sintáctico para el DSL, y aquí se utilizará el método de análisis de sintaxis.

DSL (lenguaje específico de dominio) es un lenguaje de programación utilizado en un campo específico. Este campo específico es relativo al lenguaje común de C, C ++, Python. El lenguaje común se puede usar en varios campos. La mayoría de los lenguajes de programación con los que estamos familiarizados son lenguajes comunes, y todos están completos en Turing. de.

JSON, SQL y HTML que usamos normalmente son una especie de DSL. Incluso puede intentar usar el descenso recursivo para escribir un analizador JSON, XML, que es más valioso que escribir un sitio web de comercio electrónico.

Continuando con el aprendizaje, aprenderá cómo se genera el árbol de sintaxis abstracta AST, cómo transformarlo en código intermedio, cómo optimizar el código intermedio y, finalmente, cómo generar instrucciones de máquina.

Verá la aplicación de algoritmos codiciosos en la asignación de registros, y también verá cómo el análisis de accesibilidad en la teoría de grafos logra la eliminación del código muerto.

El botón de compilación verde en el IDE ya no es magia negra para ti.

¿Por qué un clic para generar un programa ejecutable?

¿Cómo se convirtieron las letras en inglés que escribiste en instrucciones binarias?

Después de aprender los principios de la compilación, todo esto no es un problema. Mamá ya no tiene que preocuparse por tu estudio ~

Por supuesto, la dificultad de completar un compilador como GCC y Clang es demasiado alta y demasiado alta Nuestro propósito de aprender los principios de compilación no es construir tales ruedas, sino comprender y usar mejor los lenguajes de programación.

5. Estructura del sistema y principio de composición

Lo anterior tiene que ver con el nivel de software, y la arquitectura se trata de cómo funciona la computadora. Usted comprenderá cómo funciona una computadora típica con programas almacenados.

Recuerdo que un profesor de la Universidad de Nantah dijo: "No estamos aprendiendo a usar computadoras, sino a aprender a construir computadoras". Aunque la construcción de computadoras es un poco exagerada, al menos tenemos que entender los principios de implementación de la computadora y entender cómo la CPU ejecuta el código. ? De lo contrario, estarás muy confundido. Está claro que un montón de letras en inglés pueden correr en circuitos como CPU. Estaba desconcertado por el lenguaje C en mi primer año, hasta que aprendí los principios de composición y lógica digital.

Decimos que todo en la computadora es 0, 1, 0 y 1 se expresan a través de niveles alto y bajo. Las operaciones numéricas binarias se expresan a través de circuitos de compuerta lógica como Y, O y NO, y luego estos circuitos simples se integran. , Forma un procesador con potencia informática como ALU.

Verá cómo una instrucción es ejecutada por la CPU La CPU recupera la instrucción de la memoria o caché, la coloca en el registro de instrucciones y decodifica la instrucción. La decodificación consiste en dividir la instrucción en una serie de microoperaciones y operandos de acuerdo con las reglas de codificación de la instrucción. Luego emita varias instrucciones de control de equipos para realizar microoperaciones. Esto completa la ejecución de una instrucción.

Decimos que después de aprender los principios de compilación, podemos entender cómo el código escrito en inglés se convierte en instrucciones binarias. Después de aprender el sistema operativo, podemos entender cómo los programas binarios están vinculados entre sí y cómo los carga y ejecuta el sistema operativo. El principio de composición le dirá cómo las instrucciones binarias controlan la ejecución de la CPU Nuestro sistema operativo es esencialmente un programa binario.

Cuando comprenda la jerarquía de almacenamiento de la computadora y la caché de varios niveles, escribirá programas más rápidos al optimizar los métodos de acceso a los datos.

Aprenderá cómo la arquitectura subyacente admite marcos de pila y el paso de parámetros en lenguajes como C. ¿Cómo se pasan los parámetros a otra función? ¿Cómo obtener el valor de retorno de la función?

Este es el significado de aprender los principios de composición para escribir código.

¿Cuál es el punto de aprender esto?

Verá completamente cómo el código escrito se convierte en instrucciones binarias, cómo controlar varios circuitos de puerta y finalmente se convierte en un programa colorido en la pantalla (por supuesto, es posible que también deba aprender el principio de la pantalla), estos somos nosotros A menudo denominados "conceptos básicos" y "principios".

Y muchas ideas en arquitectura de computadoras se pueden usar ampliamente en el desarrollo de software moderno, como la idea de caché multinivel de la CPU, que es la tecnología de almacenamiento en caché que usamos para mejorar la concurrencia en el desarrollo de servidores, incluidas las estrategias de reemplazo de caché, etc.

Cuando la computadora ya no es una caja negra para usted, comprende cada paso desde el código escrito hasta la ejecución, y esto también se convertirá en su competitividad central en el futuro. Como graduado de una especialización, no solo debe usar Java, Redis, Mysql, Spring Escribir varios sitios web.

Si hay lectores que cambian de carrera a mitad de camino o salen de cursos de formación, espero que dispongan de tiempo para compensar estos cursos básicos, lo que les hará avanzar más y de forma más constante en el camino de la programación.

6. Estructura y algoritmo de datos

¿Por qué no es importante poner el algoritmo al final? Al contrario, es demasiado importante, así que deja que sea el final.

Si quieres preguntarme ¿de qué te arrepientes en la universidad? Debe ser porque no aprendí el algoritmo en el primer año para jugar ACM.

Los estudiantes que todavía están en su primer y segundo año no aprovechan la oportunidad, no esperen a arrepentirse más tarde. Por supuesto, sin ACM, podemos aprender bien las estructuras de datos y los algoritmos.

Puede ver las estructuras de datos y los algoritmos en cualquier campo de la computadora. Por ejemplo, en el principio de compilación, la asignación de registros utilizará codicia, la detección y eliminación de códigos muertos utilizará conocimientos inalcanzables en teoría de grafos; procesos del sistema operativo, reuniones de programación de hilos Se utilizan colas de varios niveles y algoritmos de programación; el reemplazo de Cache en el principio de composición utilizará algoritmos como LRU y FIFO; el desarrollo de la base de datos necesaria también es inseparable de las estructuras de datos y algoritmos de búsqueda como el árbol B + y LSM.

Muchas veces los algoritmos que necesitamos están encapsulados en la biblioteca básica de lenguajes de programación, por lo que muchos estudiantes sienten que los algoritmos están demasiado lejos de nosotros, pero no es así.

Si no aprende el algoritmo, ni siquiera sabrá cuándo usar Map (implementado por árbol rojo-negro) y cuándo usar HashMap.

Entonces, el algoritmo de aprendizaje nos ayuda a elegir la estructura de datos más adecuada según el escenario de la aplicación.

Los algoritmos también son inseparables en el desarrollo diario. Por ejemplo, el análisis de cierto código de estructura TLV (Tag-Length-Value) anidado involucrado en el trabajo reciente de Xiaobei requiere conocimientos tales como recursividad y árboles de múltiples ramas. Si no aprende el algoritmo, solo puede ver una gran cantidad de if / else, while / for en el programa. . .

Se puede decir que un ingeniero que no conoce algoritmos definitivamente no es un buen ingeniero.

7. ¿Por qué no hablo de redes informáticas, bases de datos, etc.

A muchas personas les gusta clasificar las redes de computadoras y los principios de las bases de datos como bases de la computadora, por supuesto que también estoy de acuerdo, porque un estudiante en una clase de ciencias de la computación con una estructura de conocimiento completa debe comprender este conocimiento.

Pero personalmente creo que las redes de computadoras y las bases de datos no son más que software de capa de aplicación construido sobre sistemas operativos, principios de compilación y principios de composición.

¿Que es una base de datos? Antes de que existiera una base de datos, se usaban archivos para almacenar datos, pero era inconveniente encontrarlos, modificarlos, etc. La base de datos simplemente mejoró la eficiencia de este proceso.

¿Qué hace la red? La red permite que los programas que no se encuentran en la misma computadora se comuniquen entre sí, lo que es esencialmente un medio de comunicación entre procesos.

Si solo está desarrollando software industrial autónomo, realmente ni siquiera necesita aprender la red. Es solo que la mayoría de los programadores ahora trabajan en empresas de Internet, por lo que, independientemente de la parte frontal y posterior, son inseparables de tratar con protocolos de red como HTTP.

Para reiterar: no es que la red y la base de datos no sean importantes, pero creo que pertenecen al software construido en el sistema operativo y no están incluidos en la base.

Conocimiento del dominio

No me atrevo a decir mucho sobre esto, porque no sé mucho sobre varios campos. Solo por mencionar un poco, no es más que un comentario.

Si quieres ir a Tencent o NetEase para desarrollar un motor de juego, entonces los gráficos deben ser un conocimiento que no puedes evitar. Además, debes aprender a renderizar pipelines, shaders, física, iluminación, etc.

Si desea ir a una empresa como PingCap para hacer almacenamiento distribuido, entonces el conocimiento teórico distribuido debe ser una puerta de entrada que no pueda sortear, incluido el teorema CAP, el algoritmo Paxos, el algoritmo Raft, el protocolo ZAB, etc.

Si desea escribir una base de datos, debe comprender muchas cosas como el disco, la implementación del índice, el análisis de SQL (principio de compilación), las transacciones, cómo usar MVCC para resolver conflictos de lectura y escritura, etc., y muchos niveles de lenguaje de programación. Algunas cosas, como cerraduras, semáforos y habilidades de programación simultáneas, debo decir que construir una base de datos es un trabajo sucio y agotador.

Además, si desea crear una base de datos distribuida, es posible que deba aprender el conocimiento de la fragmentación de datos, cómo realizar tareas de consulta, si hacerlo de forma centralizada o llevar la lógica a cada nodo, cómo implementar transacciones distribuidas, etc.

¿Dijiste que solo quieres ir a la gran fábrica CRUD? ¡No pasa nada, hierro viejo!

Luego, debe estar familiarizado con un lenguaje compilado (C / C ++, Java, Go) y comprender los principios subyacentes del lenguaje, como C ++. Debe mirar el STL y el modelo de objetos. No sabe qué son las tablas de funciones virtuales y los punteros inteligentes. ¿Quieres ir a Tencent para escribir C ++? Para Java, tienes que recordar JVM, qué algoritmo de recolección de basura, ¿no miras ConcurrentHashMap, quiero decir que haces Java?

El objeto de nuestro CRUD es la base de datos, ¿verdad? Entonces no puede aprender a usar bien la base de datos. Los usuarios acceden a nuestros servicios a través de HTTP. ¿Deben comprender HTTP? Por cierto, no mire el apretón de manos de tres vías de TCP y sus cuatro manos agitadas. ¿Le da vergüenza decir que está aprendiendo computadoras?

Los usuarios ponen dinero e información aquí, por lo que deben garantizar la seguridad de los datos del usuario, ¿verdad? ¿Tiene que comprender los métodos comunes de ataque web, como XSS, inyección SQL y CSRF? Debe conocer los métodos de seguridad como HTTPS, RSA, firma y certificado digital.

Hay demasiado tráfico en Double Eleven, y el jefe todavía te obliga a soportarlo. Entonces tienes que entender el caché, asíncrono, cola de mensajes, NoSQL, estos grandes asesinos imprescindibles para decenas de millones de QPS, ¿verdad?

¡Echar un vistazo! No es tan fácil hacer CRUD bien.

(El párrafo anterior es solo otra forma de escribir el conocimiento que los estudiantes de back-end necesitan aprender. No es una queja o una broma, es puro entretenimiento.

habilidad

Esto es mucho, incluidos IDE como VSCode y Jetbrains, y herramientas de gestión de versiones como Markdown y Git para la escritura de documentos. Inicio de sesión remoto SSH, reenvío de puertos, penetración de intranet Ngrok, etc. Estas herramientas para mejorar la eficiencia de su desarrollo son todas habilidades. No hay nada que decir al respecto. Por lo general, necesita aprender más y acumular.

Solo menciono un punto, use Linux y tipo Unix (Mac) como la computadora de desarrollo principal tan pronto como sea posible. Cuando era estudiante de segundo año, leí "Trabajar con Linux" de Wang Ying, compré un SSD y lo puse en un shell de disco U e hice un disco de arranque. Luego usé Ubuntu durante casi un año, solo en la selección de cursos Windows se abrirá solo cuando se necesite el navegador IE para enviar tareas, etc. (¡tengo que quejarme del sitio web de la vieja escuela!)

Por supuesto, no soy un ávido fanático de Linux. Simplemente siento que el desarrollo es inseparable de la instalación en varios entornos y el uso de líneas de comando. Los sistemas tipo Unix mencionados anteriormente tienen ventajas naturales. ¡Quien lo use lo sabrá!

para resumir

Después de que terminé de escribir, descubrí que la extensión de este artículo es "básica: conocimiento de dominio: habilidades" cercana a 7: 2: 1.

Este es también el porcentaje de tiempo que te recomiendo que dediques tiempo de estudio durante la universidad. Al menos el 50% del tiempo lo dedicas a los conocimientos básicos. Por supuesto, si has terminado de aprender todas estas cosas, puedes ir en la dirección que te interesa estudiar.

No se meta en los rastreadores Java Web y Python en su primer o segundo año, ya que se pueden aprender, pero no son el punto.

Entonces, ¿cómo evalúas tu aprendizaje?

Es de suponer que debe haber oído hablar de esta pregunta de la entrevista en la red informática: "¿Qué pasó desde la entrada de la URL hasta la visualización de la página?"

Para plantear esta pregunta de otra manera es "cómo se envía un paquete de datos a otra computadora".

Si puedes contar todo el proceso por completo, ¡entonces debes haber aprendido sobre Jiwang! Es por eso que a las entrevistas les gusta tanto hacer esta pregunta.

Entonces hagamos una pregunta

"¿Qué pasó desde que se escribió el código hasta que se ejecutó el programa?"

Cuanto más detallada sea la respuesta a esta pregunta, mejor. Básicamente, si puede explicarlo con claridad, comprenderá los principios de compilación, sistema operativo y principios de composición.

Esta pregunta también se coloca aquí, y el resumen de la publicación de seguimiento, continúe prestando atención a la guía de programación.

Por desgracia, si un estudiante de último año tan atento me hubiera dicho esto, no habría sido más de medio año jugando en el desarrollo de Andorid, Java Web y los rastreadores de Python. . .

Afortunadamente, más tarde me di cuenta de la importancia de los conceptos básicos y comencé a aprender a ensamblar, volví a aprender C, me involucré en mini SO y miré los principios de implementación del kernel de Linux.Finalmente, perdí el cabello con éxito. . .

Finalmente, quiero darte algo que me gusta:

No construya plataformas altas sobre arena flotante.


更多精彩推荐
☞本周六定位上海!解析百度文心(ERNIE)如何助力快速定制企业级NLP模型
☞头发越秃程序员就越厉害?| 每日趣闻
☞独家对话谢宝友:做一款类似于 Linux 的国产操作系统  | 人物志
☞DeepFashion实现服装检测搭配
☞蓝色巨人IBM全力奔赴的混合云之旅能顺利吗?
☞区块链赋能供应链金融|应用优势与四类常见模式
点分享点点赞点在看

Supongo que te gusta

Origin blog.csdn.net/csdnsevenn/article/details/109252064
Recomendado
Clasificación