Red de conocimientos sobre prescripción popular - Conocimiento del confinamiento - ¿Cómo escribir la descripción del proyecto (JAVA) en el currículum?

¿Cómo escribir la descripción del proyecto (JAVA) en el currículum?

¿Qué habilidades profesionales se requieren para convertirse en un programador o ingeniero de Java calificado y qué deben preparar los entrevistadores antes de la entrevista? El contenido que se muestra en este artículo puede usarse como contenido para su currículum o como contenido para hablar con el entrevistador durante la entrevista. Puedes escribir estos contenidos en tu currículum, pero por supuesto es más importante que muestres estas habilidades profesionales al entrevistador durante la entrevista. Creo que este artículo será útil para los estudiantes de primer año que buscan puestos de programador Java (ingeniero Java) y para los estudiantes junior que quieran convertirse en desarrolladores Java intermedios y avanzados.

Habilidades profesionales

1. ¿Competente en el uso del lenguaje Java para programación orientada a objetos, buenos hábitos de programación, familiarizado con el Java de uso común? API, incluido el marco de recopilación, subprocesos múltiples (programación concurrente), E/S (NIO), Socket, JDBC, XML, reflexión, etc.

2. ¿Está familiarizado con Java basado en JSP y Servlet? ¿Desarrollo web, una comprensión profunda de los principios de funcionamiento y los ciclos de vida de Servlets y JSP, dominio del uso de JSTL y EL para escribir páginas dinámicas sin scripts y uso de grupos web como oyentes y filtros? ¿Y el patrón de arquitectura MVC de Java? Experiencia en desarrollo de proyectos de red.

3. Tener un conocimiento profundo del contenedor IoC de Spring y los principios AOP, ser competente en el uso del marco Spring para administrar varios componentes web y sus dependencias, y ser competente en el uso de Spring para administrar transacciones, registros y seguridad. , etc. MVC, como tecnología de capa de presentación, está familiarizado con la integración de Spring con otros marcos basándose en la experiencia de desarrollar proyectos web con el soporte persistente proporcionado por Spring.

4. Ser competente en el uso de marcos ORM como Hibernate y MyBatis, estar familiarizado con las API principales de Hibernate y MyBatis y tener un conocimiento profundo del mapeo de asociaciones, el mapeo de herencia, el mapeo de componentes y el mecanismo de almacenamiento en caché de Hibernate. Comprensión, gestión de transacciones, ajuste del rendimiento, etc.

5. Ser competente en el uso de HTML, CSS y JavaScript para el desarrollo web front-end, estar familiarizado con jQuery y Bootstrap, tener un conocimiento profundo de la aplicación de la tecnología Ajax en proyectos web y haber utilizado front. -Experiencia en desarrollo de proyectos de framework MVC final (AngularJS) y motor de plantillas JavaScript (HandleBars).

6. Estar familiarizado con los productos de bases de datos relacionales de uso común (MySQL, Oracle) y dominar el uso de SQL y PL/SQL para la programación de bases de datos.

7. Estar familiarizado con los principios del diseño orientado a objetos, tener un conocimiento profundo de los patrones de diseño y los patrones de arquitectura de aplicaciones empresariales y experiencia relevante en el desarrollo práctico, ser competente en el uso de UML para el análisis orientado a objetos y diseñar y tener experiencia en TDD (Test Driven Development) y DDD (Domain Driven Design).

8. Familiarizado con el uso de servidores web y servidores de aplicaciones como Apache, NginX, Tomcat, WildFly, Weblogic, etc., y familiarizado con la configuración de varios servidores de integración, agrupación y equilibrio de carga.

9. ¿Competente en el uso de la herramienta de creación de prototipos de productos Axure y en el uso de las herramientas de modelado de diseño PowerDesigner y Enterprise? Arquitecto, competente en el uso de los entornos de desarrollo Java Eclipse e IntelliJ, competente en el uso del entorno de desarrollo front-end WebStorm, competente en el uso de las herramientas de control de versiones de software SVN y Git, competente en el uso de las herramientas de gestión y construcción de proyectos Maven y Gradle.

Nota: No todos los elementos enumerados anteriormente deberían resultarle familiares. Puede realizar los preparativos específicos correspondientes de acuerdo con los requisitos específicos de la contratación corporativa. Personalmente, creo que los primeros seis elementos deberían ser los requisitos mínimos y también son las habilidades profesionales que debe poseer un desarrollador de Java.

Introducción al proyecto

Este sistema es desarrollado por X y confiado por y para Z. El sistema incluye A, B, C, D y otros módulos.

El sistema utiliza el marco de código abierto e y la tecnología front-end f desarrollada por Java Enterprise. La capa de presentación utiliza la arquitectura G, utilizando H como vista e I como controlador para implementar solicitudes de estilo REST. La capa de lógica de negocios adopta el modo J, usando K para implementar transacciones, registros, seguridad y otras funciones, y L para implementar servicios de almacenamiento en caché, la capa de persistencia usa M para encapsular operaciones CRUD y la capa inferior usa N para implementar el acceso a datos. Todo el proyecto adopta el modelo de desarrollo P.

Nota: En la descripción anterior, e generalmente se refiere a Spring (una opción integral para el desarrollo empresarial de Java); es probable que f sea una biblioteca jQuery y sus complementos o un marco de arranque. Por supuesto, si desea crear una aplicación de una sola página (SPA), la mejor solución es un marco MVC front-end (como AngularJS) y un motor de plantillas JavaScript (como Handle Bars). g es obviamente MVC (Modelo-Vista-Control), ¿el marco de implementación más probable es Spring? MVC, además de Struts? 2. JSF y la implementación MyFaces proporcionada por Apache para JSF pueden usar JSP como V en MVC, motores de plantillas (como Freemarker y Velocity) para generar vistas y varios documentos o informes (como Excel y PDF). Los servlets y los controladores personalizados son la C en MVC. ¿Claro, primavera? Red de servicio de Dispatcher porque el controlador de front-end se proporciona en MVC. j suele ser un script de transacción, K debería ser tecnología AOP (programación orientada a aspectos), L memcached y Redis se usan ampliamente actualmente; M tiene muchas opciones, probablemente Hibernate y MyBatis, o ambas tecnologías se pueden usar al mismo tiempo. Sin embargo, Hibernate normalmente maneja adiciones, eliminaciones y cambios, mientras que MyBatis maneja consultas complejas. Además, TopLink y jOOQ son excelentes soluciones de capa de persistencia. Tradicionalmente, el acceso a los datos subyacentes utiliza bases de datos relacionales, como MySQL, Oracle, SQLServer, DB2, etc. Con el advenimiento de la era del big data, también se pueden adoptar NoSQL (como MongoDB, MemBase, BigTable, etc.) y otras soluciones de acceso a big data (como GFS, HDFS, etc.). El modelo de desarrollo P del proyecto puede ser modelo en cascada, modelo de creación rápida de prototipos, modelo incremental, modelo en espiral, modelo de fuente, modelo RAD, etc.

Proceso de desarrollo del proyecto

1. ¿Análisis de viabilidad? gt gt gt? ¿Informe de análisis de viabilidad? /?Plan de desarrollo del proyecto

2. ¿Análisis de requisitos? gt gt gt? Especificaciones de requisitos

1.OOAD (diagrama de casos de uso, diagrama de secuencia, diagrama de actividades)

2. Prototipo de interfaz: ayuda a comprender los requisitos y exportar scripts de transacciones al diseñar la capa empresarial.

3. ¿Diseño? gt gt gt? Especificaciones de diseño breves/especificaciones de diseño detalladas

1. Extraer entidades comerciales (objetos de dominio): diagramas de clases y diagramas E-R (etapa de diseño conceptual)

2. plan de implementación (específico del marco utilizado, servidor de base de datos, servidor de aplicaciones, etc.) Diseño de la capa empresarial: modo de script de transacción (transacción: la solicitud emitida por el usuario es una transacción; script: método o función; script de transacción: encapsula el la solicitud es un método o función en modo script de transacción: una transacción comienza con un script de apertura y termina con un script de cierre). La capa empresarial involucra tres tipos de objetos: clases de scripts de transacciones (que encapsulan procesos comerciales), objetos de acceso a datos (DAO) y objetos de transferencia de datos (DTO). La relación entre ellos es que la clase de script de transacción combina (agrega) el objeto de acceso a datos, los cuales dependen del objeto de transferencia de datos.

3. Ingeniería directa (el diagrama de clases UML genera código Java) e ingeniería inversa (el código Java genera diagrama de clases UML).

4. Diseño físico de la base de datos (convertir el diagrama ER en un diagrama de relaciones entre tablas, establecer bases de datos y tablas, utilizar herramientas para insertar datos de prueba)

4. 5. ¿Prueba? gt gt gt? ¿Informe de prueba? /?Informe de defectos

1. Prueba unitaria: verifique y verifique la unidad comprobable más pequeña en el software. En Java es un método en la clase de prueba y esto se puede lograr utilizando la herramienta JUnit.

2. Pruebas de integración: Las pruebas de integración también se denominan pruebas de ensamblaje o pruebas conjuntas. Según las pruebas unitarias, todos los módulos se ensamblan en subsistemas para realizar pruebas de acuerdo con los requisitos de diseño.

3. Pruebas del sistema: combine el software, hardware, periféricos, red y otros elementos confirmados para realizar diversas pruebas de ensamblaje y pruebas de confirmación del sistema de información. La prueba del sistema es para todo el sistema del producto. El propósito es verificar si el sistema cumple con la definición de la especificación de requisitos y descubrir las inconsistencias o contradicciones con las especificaciones de requisitos, para proponer una solución más completa.

4. Pruebas de aceptación: actividades de prueba de software realizadas después de que el producto de software completa las pruebas unitarias, las pruebas de integración y las pruebas del sistema y antes del lanzamiento del producto. Esta es la etapa final de las pruebas técnicas, también conocidas como pruebas de entrega. El propósito de las pruebas de aceptación es garantizar que el software esté listo y pueda ser utilizado por los usuarios finales para realizar las funciones y tareas previstas para el software.

5. ¿Entrega y mantenimiento? gt gt gt? ¿Manual de usuario? /?Guía de operación

Gestión de proyectos

Control de versiones: CVS/SVN/Git

Compilación automática: Ant/Maven/Ivy/Gradle

Integración continua: Hudson/Jenkins

Arquitectura del sistema

Servidores de equilibrio de carga: F5, A10

Servidores de aplicaciones:

Servidor HTTP : Apache, NginX (HTTP, proxy inverso, servidor proxy de correo)

Contenedor de servlets: Tomcat, Resin

Contenedor EJB: Wildflower (¿JBoss? ¿Aplicación? Servidor), GlassFish, Weblogic, ¿Webesfera? Servidor de base de datos: MySQL, Oracle

Aplicación de herramienta (complemento) de terceros

Herramienta de gráficos: complemento de gráficos basado en jQuery (como jQchart, Flot, Charted, etc. .), Chart.js, Highcharts, etc.

Herramienta de informes: ¿Pentaho? Informes, iReports, informes dinámicos, etc.

Procesamiento de documentos: POI, iText, etc.

Motores de flujo de trabajo: jBPM, OpenWFE, Snaker, SWAMP, etc. ?

Programación de trabajos: Quartz, JobServer, Oddjob, etc.

Servicios de almacenamiento en caché: EhCache, memcached, SwarmCache, etc.

Cola de mensajes: Open-MQ, ZeroMQ, etc.

Marco de seguridad: Shiro, PicketBox, etc.

Motores de búsqueda: IndexTank, Lucene, ElasticSearch, etc.

Framework Ajax: jQuery, ExtJS, DWR, etc.

Complementos de UI: EasyUI, MiniUI, etc.

Cuadro de texto enriquecido: UEditor, CKEditor, etc.

Preguntas de la entrevista

¿Para qué empresa se desarrolló este proyecto?

¿De cuánto es la inversión en el proyecto?

¿Cuántas personas participan en el desarrollo del proyecto?

¿Cuál es la proporción de evaluadores, desarrolladores y directores de proyectos en todo el equipo?

¿Cuánto tiempo lleva desarrollado el proyecto?

¿Cuál es el tamaño total del código del proyecto?

¿Cuánto código tienes?

¿Qué modelo o proceso de desarrollo se utiliza en el proyecto?

¿Cuál es la estructura del proyecto?

¿Cuáles son las opciones tecnológicas para el proyecto?

¿Qué responsabilidades tuviste en este proyecto?

¿Tienes reuniones frecuentes o trabajas horas extras?

¿Cuáles son los beneficios o lecciones aprendidas una vez finalizado el proyecto?

¿Cuál fue la parte más difícil del proyecto?

¿Cómo resolver los diversos conflictos encontrados en el desarrollo de equipos?

Ming: Para aquellos que no tienen experiencia real en proyectos, pueden buscar empresas que contraten programadores de Java en sitios web como 51job, etc., encontrar sus sitios web oficiales, conocer los proyectos que han realizado. y ver los detalles de la Introducción del proyecto, y luego intentar completar algunas funciones. Lo mejor es consultar a expertos para ver si su diseño y código son adecuados, lo que equivale a acumular una cierta experiencia en proyectos.

Puedes hacer preguntas al entrevistador durante la entrevista.

Me di cuenta de que utilizaste la tecnología X. ¿Cómo resolviste el problema Y?

¿Por qué su producto utiliza tecnología X en lugar de tecnología Y? Hasta donde yo sé, aunque la tecnología X tiene ventajas A, B, C, etc., también tiene problemas D y E, que la tecnología Y puede resolver.

No estoy muy familiarizado con la tecnología X que mencionaste, pero creo que es una buena solución. ¿Puedes contarme más sobre cómo funciona?

¿Cómo planifica los proyectos tu equipo? ¿Cuántas reuniones ordinarias hay a la semana? ¿Cuál es la cantidad aproximada de código por semana?

Para el problema X, la única solución que se me ocurre es y. ¿Cómo resolverías este problema?

Negociaciones laborales

Tenga confianza al formular requisitos de tratamiento específicos.

Oferta ligeramente superior a la esperada

No te centres solo en el salario (muchas empresas están más dispuestas a ceder en condiciones distintas al salario)

Utiliza la oferta más alta método adecuado (puede intentar negociar el tratamiento por teléfono o correo electrónico)

Autoevaluación

Capacidad de aprendizaje (las personas involucradas en la industria de TI deben mantenerse al día con las nuevas tecnologías, herramientas y métodos)

Conciencia del equipo (en comparación con el heroísmo individual, la industria de TI aboga por el trabajo en equipo)

Resistencia al estrés (muchas empresas de TI tienen una intensidad de trabajo relativamente alta)

Programación autodidacta, acceso gratuito a tutoriales y materiales de TI de alta calidad, búsqueda: Dark Horse Programmer.

Enlace web