Como viejo programador que lleva más de diez años programando, aunque nunca me uní a Alibaba, también rechacé ofertas de Baidu y Tencent cuando cambié de trabajo y elegí una empresa de Internet que fuera más adecuada. Para mí Mis habilidades de programación El principal factor determinante es el entorno que tiene mucho que ver con mis habilidades básicas. Hace unos días respondí una pregunta sobre quién tiene un mayor nivel de codificación entre una empresa grande y una pequeña. Hay factores externos que influyen en ello, pero el factor principal soy yo mismo. No tengo la determinación de mejorar mi nivel de codificación, por muy bueno que sea el entorno externo, no significa mucho.
En grandes empresas como Alibaba, debido a los acuerdos laborales relativamente completos, el envío de códigos normalmente requiere la aprobación del líder, lo que puede mejorar en gran medida la calidad del código hasta cierto punto. ser más estricto y el control de las pruebas también será más estricto. Las pequeñas empresas comunes pueden tener un poco menos de personal y menos control. Un sistema estricto y estandarizado puede promover una comprensión más profunda de los programadores hasta cierto punto. para mejorar y si está dispuesto a mejorar más rápido.
En realidad, cuando se trata de grandes empresas como Alibaba, es principalmente una cuestión de mentalidad de las personas. Sienten que las grandes empresas deben estar más estandarizadas que las pequeñas. Para alguien que ha experimentado una gran empresa. Sigo pensando que son solo un tornillo, también quiero ir a una pequeña empresa para poder desempeñarme más a fondo. Las personas de las pequeñas empresas anhelan el trato y los estándares de las grandes empresas. Al igual que los solteros, siempre quieren entrar a una ciudad sitiada, y los que entran envidian la libertad de no estar casados. De hecho, ir y venir es solo eso.
Una vez dejé el puesto de director técnico de departamento en una empresa mediana para ingresar a una gran empresa. Ahora me imagino que en realidad no vale la pena cuando entro en una gran empresa madura. Mi contribución es solo una gota en el océano. Quiero progresar. Es extremadamente difícil lograrlo y las oportunidades reales todavía están en las empresas emergentes o en las pequeñas y medianas empresas. Por supuesto, estas cosas necesitan experiencia personal para sentirlas. Es difícil apreciar cuando eres joven y vigoroso. Simplemente sientes que la elección que has hecho es la correcta. Practica y discierne el verdadero conocimiento.
Espero que esto ayude.
¡Déjame responderte basándome en mi propia experiencia! Me dedico al desarrollo de Java. Antes de unirme a Alibaba, trabajé en otras empresas durante cuatro años. En los primeros dos años, lo que más se hizo fue traducir directamente el negocio a código, y lo que más se hizo fue cuajada. La ingeniería y el diseño estructurado no existen en absoluto y no se consideran el rendimiento, la escalabilidad, la facilidad de uso y la mantenibilidad. Simplemente implemente la función y utilice el lenguaje orientado a objetos para la programación orientada a procesos. (Porque todo el mundo hace esto) Principalmente porque me acabo de graduar y trabajé en el sistema ERP en esta empresa, y simplemente ignoré las funciones si eran utilizables. En los siguientes dos años, me cambié a una empresa de comercio electrónico. Esto también era un sumidero. El código era casi el mismo que el de una montaña. Cuando entré a hacer un inventario, lo primero que hice fue familiarizarme con él. negocio y luego reestructurarlo. Casi todas las personas que han hecho esto antes se han ido. El modelo es abstracto, los campos son jerárquicos y los módulos son jerárquicos. Después de un tiempo, me siento bien conmigo mismo. Pero después de dos años de superponer el negocio, estaba casi arruinado. Es comprensible sacrificar algo por la rápida iteración del negocio. Luego me fui [cubrirse la cara].
Cuando entré en Alibaba, estaba involucrado en el desarrollo de gama media. Lo que más me gusta hacer aquí es reinventar la rueda, haga lo que haga, tengo que prestar atención a la alta disponibilidad, reutilización, escalabilidad, mantenibilidad y legibilidad... Cuando escribo código, normalmente uso una interfaz de este tipo. una interfaz, generalmente enciendo el fusible y el interruptor de degradación primero, bloqueos distribuidos y luego almacenamiento en caché, y luego la empresa usa el modelo de dominio + modelo abstracto generalizado + patrón de diseño de fábrica + patrón de estrategia después de esta operación, para admitir la escalabilidad. , los puntos de extensión SPI deben personalizarse para proporcionar expansión. El código de una función empresarial está completamente separado. Sin embargo, la calidad de los proyectos y el código ha mejorado mucho en comparación con empresas anteriores. Sólo puedo decir que el medio ambiente tiene un gran impacto.
Aunque nunca he estado en una gran fábrica, todavía quiero dar una respuesta contundente, después de todo, muchos amigos que conozco trabajan o han trabajado. MURCIÉLAGO.
Mi opinión es: BAT tiene muchas personas excelentes, así como gente común, aunque no todas pueden alcanzar el nivel técnico admirable, después de todo, la plataforma es alta, por lo que la visión se volverá más amplia; code Los requisitos son más estrictos, por lo que los programadores comunes se verán obligados a mejorar, si hay muchas personas talentosas a su alrededor, los programadores comunes también se verán afectados y mejorarán más rápido.
Hoy leí un artículo sobre mi experiencia de entrevista en Alibaba. Me gustaría compartirlo con ustedes para ver qué tan lejos estoy de ingresar a Alibaba.
Subprocesos múltiples de Java
El principio del grupo de subprocesos, ¿por qué deberíamos crear un grupo de subprocesos?
Ciclo de vida del subproceso, ¿cuándo aparecerá un proceso zombie?
¿Qué es la seguridad del subproceso y cómo lograr la seguridad del subproceso?
¿Cuántos grupos de subprocesos hay? ¿Crear parámetros básicos? ¿Cómo configurar razonablemente el tamaño del grupo de subprocesos?
Diferencias sincronizadas y volátiles, granularidad de bloqueo sincronizado, escenarios de interbloqueo simulados, atomicidad y visibilidad
modelo de memoria JVM relacionado
, mecanismo de GC y principio; Cuáles son los dos tipos de GC? ¿Cuándo se activará el GC completo?
Hay varios tipos de cargadores de clases en la JVM. ¿Por qué hay varios tipos?
¿Qué es el mecanismo de delegación de padres? Introducir algunos procesos operativos y los beneficios del modelo de delegación principal (realmente no lo sé...)
¿En qué circunstancias necesitamos destruir el modelo de delegación principal?
Ajuste común de JVM ¿Cuáles son los mejores métodos? ¿Qué parámetro se puede ajustar específicamente y a qué valor?
División de memoria de la máquina virtual JVM, cargador de clases, algoritmo de recolección de basura, recolector de basura, cómo se analiza la estructura del archivo de clase
Extensión de Java
Implementación roja; Principios y escenarios de aplicación del árbol negro;
¿Qué es NIO? ¿Para qué tipo de escenarios es adecuado?
¿Qué mejoras tiene Java9 sobre Java8?
¿Cuál es la estructura de datos interna de HashMap? ¿Cómo se implementa la capa inferior?
Hablemos sobre el uso y la implementación de la reflexión. ¿Es la reflexión muy lenta? ¿Deberíamos evitar usar la reflexión en nuestros proyectos?
Hablemos sobre los escenarios y la implementación de anotaciones personalizadas. /p>
p>
La diferencia entre List y Map, la diferencia entre Arraylist y LinkedList, la diferencia entre ArrayList y Vector
Spring
Los principios de implementación; y escenarios de Spring AOP (los escenarios de aplicación son muy importantes)
El alcance y ciclo de vida de Spring beans;
¿Qué mejoras ha realizado Spring Boot con respecto a Spring? ¿Qué mejoras ha realizado Spring 5 en comparación con Spring 4 (avergonzado, todavía usamos Spring 4 y no nos importan las versiones superiores)
¿Qué es Spring IOC? ¿Cuáles son las ventajas?
SpringMVC, proxy dinámico, reflexión, principio de AOP, nivel de aislamiento de transacciones
Middleware
Introducción completa del enlace de una sola llamada de Dubbo;
¿Cuántas estrategias de equilibrio de carga admite Dubbo?
El proveedor de servicios Dubbo Provider quiere controlar el límite superior de solicitudes simultáneas. ¿Cómo hacerlo?
¿Cuántos métodos de configuración admite Dubbo al iniciar?
¿Cuántos productos de middleware de mensajes conoces? Una introducción a las ventajas y desventajas de cada producto;
¿Cómo garantiza el middleware de mensajes la coherencia de los mensajes y cómo implementar un mecanismo de reintento de mensajes?
Introducción al mecanismo de disyuntor de Spring Cloud;
Comparando Spring Cloud con Dubbo, ¿en qué escenarios se debe utilizar Spring Cloud?
Base de datos
Introducción al mecanismo de bloqueo: bloqueo de fila, bloqueo de tabla, bloqueo exclusivo, bloqueo compartido
Escenarios comerciales y métodos de implementación del bloqueo optimista;
p>
Introducción a las transacciones, comprensión de las cosas distribuidas, cuáles son las soluciones comunes, qué son el envío en dos fases y el envío en tres fases;
MySQL tiene tres formas principales de registrar el modelo binlog ? ¿Cuáles son los pros y los contras de cada modo?
Bloqueos MySQL, bloqueo pesimista, bloqueo optimista, bloqueo exclusivo, bloqueo compartido, bloqueo a nivel de tabla, bloqueo a nivel de fila
Principio de transacción distribuida Confirmación de 2 fases, síncrona; asíncrono, con bloqueo y sin bloqueo
Nivel de aislamiento de transacciones de la base de datos, nivel de aislamiento predeterminado de MySQL, cómo Spring implementa las transacciones,
JDBC
Cómo implementar transacciones, implementación de transacciones anidadas e implementación de transacciones distribuidas
El análisis completo de SQL, los principios del proceso de ejecución y la conversión de filas de SQL
Redis
<; p> ¿Por qué Redis es tan rápido? ¿Cuáles son los problemas con el uso de subprocesos múltiples en redis?¿Qué estructuras de datos admite Redis?
Problemas con las tablas de salto de Redis
¿Cómo puede Redis con un solo proceso y un solo subproceso lograr una alta concurrencia? p >
¿Cómo utiliza Redis Redis para implementar bloqueos distribuidos?
¿Cómo se implementa internamente la atomicidad de las operaciones de bloqueo distribuido de Redis en Redis?
¿Qué opinas después de leerlo? ¿Existe alguna diferencia entre tus propios requisitos y los de BAT?
De todos modos, creo que es un poco difícil pasar la entrevista. No he entendido muchas características de la nueva versión del framework. Parece que tendré que tomarme un tiempo para aprender algunas antes de este año. .
La mayoría de los programadores comunes en grandes empresas como BAT están demasiado especializados y básicamente hacen un buen trabajo en un determinado aspecto. Su capacidad general está muy por detrás, pero creen que pueden hacer cualquier cosa.
Digámoslo de esta manera, si comparamos a los programadores con los chefs.
Los programadores de empresas comunes son básicamente chefs en varios restaurantes y pueden cocinar todo tipo de platos.
BAT es el comedor imperial. Los programadores han visto todo tipo de platos, pero básicamente no saben cocinar ni uno solo. Muchas personas son el equipo de picado de cebollas verdes del Departamento de Logística de Royal Kitchen.
¿Qué tan lejos está el nivel de programación de los empleados comunes de la empresa de Alibaba? No tiene sentido decir que todos los programadores de Alibaba son increíbles. Las empresas comunes también tienen muchos programadores increíbles. Esto en sí mismo no es concluyente.
Los programadores de empresas como Alibaba deberían tener la suerte de encontrar el desarrollo de software de Internet a gran escala, como diseño de arquitectura, diseño de escenas, etc. Esto debería ser posible para muchos programadores. tus ojos y también puedes ejercitarte participando en él. De manera similar, aunque muchas grandes empresas de software no tienen escenarios como Alibaba, también tienen sus propios diseños y escenarios de aplicaciones especiales que no se pueden ver en Alibaba.
En cuanto al nivel de codificación de un solo programador, puede que no haya diferencia entre los programadores de empresas normales y Alibaba. En las empresas comunes, el software se fabrica estrictamente de acuerdo con especificaciones, procesos y pruebas. Cuando ingresa, también puede conocer a expertos que lideran proyectos y reciben tutoría de expertos. Después de escuchar lo que ha oído y ver, y trabajar duro para practicar, estos programadores. No se puede decir que el nivel sea peor que el de los programadores de Alibaba. Por supuesto, la reputación de Alibaba no es más que la estricta selección al ingresar. La base de estos programadores es buena, pero para ser verdaderamente competente, debes confiar en tus propios esfuerzos además del medio ambiente.
Pero todavía existen algunas diferencias entre los programadores de grandes empresas y los programadores de pequeñas empresas. Las personas en las pequeñas empresas pueden estar expuestas a muy pocos proyectos, mientras que, al igual que Tiger Balm, están expuestas a todo y pueden hacer algunos, pero la profundidad no es suficiente. Por ejemplo, si un programador de una pequeña empresa se dedica a la codificación Java hoy, es posible que se dedique a PHP para el siguiente proyecto y luego a Python para el siguiente proyecto. Hoy es programador y cada dos meses puede ser el programador. diseñador o líder del próximo proyecto Esperar hasta que sea posible. Pero precisamente en cierto aspecto de la codificación no son tan expertos y hábiles como los programadores de algunas grandes empresas.
Además, los procesos de desarrollo y las especificaciones de las pequeñas empresas no son suficientes, algunas incluso necesitan ser construidas y ejecutadas, por lo que las reglas y regulaciones no están tan estandarizadas como las de las grandes empresas. Algunos incluso acuden a los clientes y se conectan a Internet sin realizar pruebas estrictas, lo que permite a los clientes ser conejillos de indias y fallar en todo momento.
Entonces, como programador, lo mejor es empezar a ir a una gran empresa para aprender y practicar el desarrollo de software estandarizado, lo cual es muy beneficioso. En cuanto a si eres Alibaba, no es necesariamente cierto. Definitivamente es bueno estar en Alibaba. Cuando se trata del nivel de codificación, la mayor parte depende de sus propios esfuerzos. En particular, cultivar su capacidad de pensamiento, conocimientos básicos, estar bien informado y practicar más y comunicarse son esenciales para mejorar su capacidad de codificación. De hecho, hay programadores talentosos, pero la gran mayoría de los programadores ni siquiera son talentosos. La mayoría de ellos simplemente dedican más tiempo a los elementos anteriores.
En términos de capacidad, los programadores de BAT son muy superiores a los programadores de pequeñas empresas; no creen que los programadores de pequeñas empresas tengan que hacerlo todo, por lo que las grandes empresas son sólo pequeños tornillos que se engañan a sí mismos y a los demás. Eso es todo: los programadores de las grandes empresas son más talentosos que los de las pequeñas. La tecnología depende del talento y el trabajo duro.
Tres años en Alibaba El anciano dijo algo. Lo principal es poder adquirir y ver experiencias, escenarios y desafíos que las pequeñas empresas no pueden brindarte.
Hablando de programación informática, es realmente un dolor de cabeza para las personas que aprenden informática todos los días. Nos enfrentamos a todo tipo de letras y todo tipo de símbolos especiales. La mayoría de las personas sólo pueden confundirse cuando los ven. Todo programador tiene buenas y bajas habilidades, y los programadores también enfrentan grandes dificultades a la hora de elegir una empresa.
Existe un fenómeno común entre las personas que buscan trabajo en la sociedad actual. Las personas que trabajan en pequeñas empresas quieren trabajar en grandes empresas, y las personas que trabajan en grandes empresas quieren trabajar en pequeñas y medianas empresas. empresas. Todo programador quiere tener la oportunidad de expresarse y poner en práctica los conocimientos que ha aprendido. Los programadores con mayores capacidades van a las grandes empresas y los que tienen capacidades ligeramente diferentes van a las pequeñas y medianas empresas. Sin embargo, el desarrollo de los dos en sus respectivas empresas es diferente.
Los programadores que trabajan en pequeñas y medianas empresas pueden tener un mayor margen de desarrollo en la empresa. Hay muchos programadores excelentes en las grandes empresas, al igual que Alibaba. Es posible que en este equipo, su propia capacidad. no se puede utilizar bien. Una cosa debe quedar clara: las personas con altas habilidades mejorarán cada vez más. Cada una tendrá sus propias características, aprenderán unas de otras y mejorarán entre sí, y estarán más motivadas para seguir adelante. Los programadores de empresas normales tienen menos espacio para la superación personal y no tienen un nivel tan alto como los programadores de empresas como Alibaba.
Las grandes empresas también tienen altos requisitos para los programadores. Las dificultades que estos programadores tienen que enfrentar también son muy grandes, lo que los obliga a mejorar sus propias habilidades. Si uno va a una gran empresa como Alibaba, después de trabajar durante un período de tiempo, la cantidad de programadores que trabajan en Alibaba superará con creces la de los programadores de empresas comunes. Aunque los programadores de las grandes empresas quieren ir a las pequeñas y medianas empresas, es una pérdida mayor para ellas.
Para obtener más contenido de alta calidad, continúe prestando atención a Meike.com~~
Los programadores de grandes empresas superan a los programadores de pequeñas empresas en términos de experiencia y precisión en el código. A menudo profundizan en un determinado aspecto de la tecnología y son meticulosos e impecables en la práctica del código. Los programadores de pequeñas empresas no son tan buenos como los programadores de murciélagos en términos de profesionalismo y precisión. Debido al entorno general, es imposible que un programador sea responsable del código de un determinado módulo. A menudo trabajan como dos o tres personas. Una persona. Los negocios complejos que a menudo encuentran necesitan marcos y tecnologías existentes que no pueden resolverlo. Es necesario combinar múltiples marcos técnicos y puntos de conocimiento para resolver negocios complejos.
Entonces todos son programadores. El entorno y la plataforma han creado diferentes estilos de codificación y enfoques entre los programadores. Sin embargo, en términos de actitud laboral y concentración en la tecnología, los programadores de las grandes empresas sin duda tienen mejores condiciones para desarrollarse. estos buenos hábitos. Como programador, aún debe ir a grandes fábricas a lo largo de su vida para experimentar diferentes culturas corporativas y empleados de mayor calidad. Su propia experiencia y profundidad también serán diferentes.
Desde un punto de vista puramente técnico, las grandes empresas son incomparables con las pequeñas
Los sistemas de las grandes empresas son más complejos y la investigación es más profunda.
Por ejemplo, alta concurrencia, big data,
Las pequeñas empresas no tienen tanto tráfico ni volumen de datos, por lo que no hay forma de estudiarlo.
> Una gran empresa tiene N máquinas en un sistema.
Para ahorrar recursos, debemos estudiar cómo maximizar las capacidades de la máquina, optimizar el código y optimizar la lógica.
Una pequeña empresa puede tener una o dos máquinas para soportar un sistema, y este puede funcionar normalmente siempre que no haya errores.
El aspecto no técnico depende de las capacidades comerciales de la empresa.
Opinión personal,