De quelles compétences professionnelles avez-vous besoin pour devenir un programmeur ou un ingénieur Java qualifié, et que devez-vous préparer avant l'entretien? Au cours de l'entretien, l'intervieweur veut savoir quelles compétences professionnelles vous avez. Voici ce dont un ingénieur logiciel Java qualifié a besoin.
1. Compétences professionnelles
1. Compartie dans la programmation orientée objet à l'aide du langage Java, a de bonnes habitudes de programmation et connaissent les API Java couramment utilisées, y compris les cadres de collection, le multi-threading (programmation simultanée), les E / S (NIO), Socket, JDBC, XML, réflexion, etc.
2. familier avec le développement Web de Java basé sur JSP et les servlets, a une compréhension approfondie des principes de travail et des cycles de vie des servlets et du JSP, est compétent pour utiliser JSTL et EL pour écrire des pages dynamiques sans script et avoir de l'expérience dans le développement de projet Web Java à l'aide d'écouteurs, de filtres et d'autres composants Web et de motifs d'architecture MVC.
3. Ayez une compréhension approfondie des conteneurs IOC et des principes AOP de Spring, soyez compétent pour utiliser le cadre de Spring pour gérer divers composants Web et leurs dépendances, maîtriser le Spring pour les transactions, les journaux, la sécurité, etc., avoir de l'expérience dans l'utilisation de SpringMVC comme la technologie de présentation et l'utilisation du support de persistance fourni par le printemps pour le développement du projet Web, et soyez familier avec l'intégration de Spring d'autres cadres.
4. Compétion à l'utilisation de cadres ORM tels que Hibernate et Mybatis, familiarisé avec les API de base de Hibernate et Mybatis, et a une compréhension approfondie de la cartographie d'association d'Hibernate, de la cartographie des successions, du cartographie des composants, du mécanisme de mise en cache, de la gestion des transactions et du réglage des performances.
5. Compéoint dans l'utilisation de HTML, CSS et JavaScript pour le développement du Web Front-end, familier avec JQuery et Bootstrap, ont une compréhension approfondie de l'application de la technologie AJAX dans les projets Web et ont de l'expérience dans le développement de projets à l'aide du cadre Front-end MVC (AngularJS) et du modèle JavaScript en moteur (manches).
6. Soyez familier avec les produits de base de données relationnels couramment utilisés (MySQL, Oracle), et maîtrisez la programmation de la base de données à l'aide de SQL et PL / SQL.
7. Familiarisez-vous avec les principes de conception orientés objet, avoir une compréhension approfondie des modèles de conception GoF et des modèles d'architecture d'application d'entreprise et une expérience pertinente dans le développement réel, maîtrisez l'analyse et la conception orientées objet en utilisant UML, et avoir de l'expérience dans le TDD (développement axé sur le test) et DDD (conception axée sur le domaine).
8. Familière l'utilisation de serveurs Web et de serveurs d'applications tels que Apache, Nginx, Tomcat, Wildfly, WebLogic et familier avec la configuration de l'intégration, du clustering et de l'équilibrage de charges multiples.
9. Compartif dans l'utilisation de l'outil de prototype de produit Axure, compétent dans l'utilisation des outils de modélisation de conception PowerDesigner et Enterprise Architect, compétent dans l'utilisation de Java Development Environment Eclipse et IntelliJ, compétent dans l'utilisation de l'environnement de développement frontal Webstorm Webstorm, compétent pour utiliser les outils de contrôle de version logicielle SVN et GIT, compétent dans la construction du projet et les outils de gestion Maven et Gradle. Remarque: vous devez être familier avec tous les éléments indiqués ci-dessus. Vous pouvez effectuer des préparations ciblées correspondantes en fonction des exigences spécifiques du recrutement des entreprises. Cependant, les 6 premiers éléments doivent être les exigences minimales et sont les compétences professionnelles qu'un ingénieur logiciel Java doit posséder.
2. Expérience du projet
Introduction du projet
Ce système est un système pour Z commandé par X et est utilisé pour Z. Le système comprend des modules A, B, C, D et D et d'autres. Le système utilise le framework open source Java de niveau d'entreprise E et la technologie frontale F. La couche de présentation utilise l'architecture G, utilise H comme vue I comme contrôleur et implémente les demandes de style repos; La couche logique métier utilise le mode j et met en œuvre les fonctions de transaction, de journal et de sécurité via K et implémente les services de cache via L; La couche de persistance utilise M pour encapsuler les opérations CRUD, et la couche sous-jacente utilise N pour implémenter l'accès aux données. L'ensemble du projet adopte un modèle de développement P.
illustrer:
E fait généralement référence au printemps (un choix à guichet unique pour le développement au niveau de Java Enterprise);
F est le plus susceptible d'être une bibliothèque jQuery, son rechargement ou son framework bootstrap. Bien sûr, si vous souhaitez créer une seule application de page (SPA), la meilleure solution est le framework MVC frontal (tel que AngularJS) et le moteur de modèle JavaScript (comme le guidon); G est évidemment MVC (modèle-View-Control), et le cadre de mise en œuvre le plus probable est Spring MVC. De plus, il existe des implémentations Struts 2, JSF et MyFaces fournies par Apache pour JSF.
H est jsp. JSP est V dans MVC. Vous pouvez également utiliser des moteurs de modèle (tels que Freemarker et Velocity) pour générer des vues, ou divers documents ou rapports (tels que Excel et PDF, etc.).
I est un servlet ou un contrôleur personnalisé. Ils sont C dans MVC. Bien sûr, Spring MVC fournit Dispatcherservlet en tant que contrôleur frontal;
J est généralement un script de transaction.
K devrait être une technologie AOP (programmation orientée Sectional).
L est actuellement largement utilisé par Memcached et Redis;
Il existe de nombreuses options pour M. les plus probables sont Hibernate et Mybatis. Les deux technologies peuvent également être utilisées en même temps, mais ajoutent généralement, supprimez et modifient l'addition, la suppression et la modification sont remises à Hibernate pour le traitement, tandis que les requêtes complexes sont remplies par MyBatis. De plus, TopLink et Jooq sont également d'excellentes solutions de couche de persistance;
L'accès aux données au bas de N est traditionnellement utilisé pour utiliser des bases de données relationnelles, qui peuvent être MySQL, Oracle, SQLServer, DB2, etc. avec l'avènement de l'ère du Big Data, du NOSQL (telles que MongoDB, Membase, BigTable, etc.) et d'autres solutions d'accès au Big Data (telles que GF, HDFS, etc.);
P est le modèle de développement de projet, qui peut être un modèle de cascade, un modèle prototype rapide, un modèle incrémentiel, un modèle en spirale, un modèle de fontaine, un modèle RAD, etc.
Processus de développement du projet:
1. Analyse de la faisabilité: rapport d'analyse de faisabilité, plan de développement du projet
2. Analyse des exigences: spécifications des exigences
OOAD (diagramme de cas d'utilisation, diagramme de synchronisation, diagramme d'activité)
Prototype d'interface: aide à comprendre les exigences et à déduire les scripts de transaction lors de la conception de la couche commerciale
3. Conception: manuel de conception de résumé et manuel de conception détaillé pour extraire les entités commerciales (objets de domaine): diagramme de classe, diagramme ER (stade de conception)
Architecture hiérarchique: déterminer les solutions de mise en œuvre techniques de chaque couche (spécifiquement aux frameworks utilisés, serveurs de base de données, serveurs d'application, etc.).
Conception de la couche commerciale: mode de script de transaction (transaction: une transaction est une transaction lorsqu'un utilisateur envoie une demande; script: une méthode ou une fonction; script de transaction: encapsule une demande dans une méthode ou une fonction; mode script de transaction: une transaction commence par l'ouverture du script et se termine avec la fermeture du script).
Il existe trois types d'objets impliqués dans la couche commerciale: la classe de script de transaction (résume le processus métier), l'objet d'accès aux données (DAO, encapsule les opérations persistantes) et l'objet de transmission de données (DTO, encapsule la perte de sang / objets de champ d'anémie). La relation entre les trois est l'objet d'accès aux données de classe de script de transaction (AGLGRÉGATION). Les deux s'appuient sur l'ingénierie vers l'avant (les diagrammes de classe UML génèrent du code Java) et le code de l'ingénierie inverse (le code Java génère des diagrammes de classe UML) Conception physique (diagrammes ER (converti en diagrammes de relations entre les tableaux, la construction de la bibliothèque et la construction de tableaux, et utiliser des outils pour insérer des données de test)
4. Codage
5. Test: Rapport de test, Rapport de défaut Test de l'unité: Vérifiez et vérifiez l'unité testable minimale dans le logiciel. En Java, les méthodes dans les classes peuvent être testées et implémentées à l'aide d'outils JUnit.
Test d'intégration: les tests d'intégration sont également appelés tests d'assemblage ou tests conjoints. Sur la base des tests unitaires, tous les modules sont assemblés en sous-systèmes pour les tests en fonction des exigences de conception.
Test système: combinant des logiciels confirmés, du matériel, des périphériques, du réseau et d'autres éléments ensemble pour effectuer divers tests d'assemblage et de confirmation du système d'information. Le test du système est un test effectué pour l'ensemble du système de produits. Le but est de vérifier si le système répond à la définition des spécifications des exigences, à découvrir ce qui est incompatible avec ou contredit les spécifications des exigences, et donc à proposer une solution plus complète. Test d'acceptation: activités de test de logiciels menées avant la publication du produit une fois que le produit logiciel a terminé les tests unitaires, les tests d'intégration et les tests système. Il s'agit de la dernière étape des tests techniques, également appelés tests de livraison. Le but des tests d'acceptation est de s'assurer que le logiciel est prêt et qu'il peut être utilisé par l'utilisateur final pour effectuer des fonctions et des tâches établies du logiciel.
6. Livraison et maintenance: Manuel d'utilisation, manuel d'exploitation
Iii. Gestion de projet
1. Contrôle de la version: CVS / SVN / GIT
2. Construction automatique: fourmi / maven / ivy / gradle
3. Intégration continue: Hudson / Jenkins
Iv. Architecture du système
1. Serveur d'équilibrage de chargement: F5, A10
2. Serveur d'applications:
Serveur HTTP: Apache, Nginx (HTTP, proxy inversé, serveur de proxy de courrier)
Conteneur de servlet: Tomcat, résine
Conteneurs EJB: Wildfly (JBoss Application Server), Glassfish, Weblogic, WebSphere
3. Serveur de base de données: MySQL, Eclipse, Oracle
5. Applications d'outils tiers (plugins)
1. Outils de graphique: plug-ins de graphiques basés sur jQuery (tels que jqchart, flot, graphique, etc.), chart.js, hauts-paroles, etc.
2.
3. Traitement des documents: POI, itext, etc.
4. Moteur de workflow: JBPM, OpenWFE, Snaker, Swamp, etc.
5. Planification des emplois: Quartz, Joberver, Oddjob, etc.
6. Services de mise en cache: ehcache, memcached, swarmcache, etc.
7. Fitre de message: Open-MQ, Zeromq, etc.
8. Frame de sécurité: Shiro, Pametbox, etc.
9. Moteurs de recherche: Indextank, Lucene, Elasticsearch, etc.
10. Framework Ajax: jQuery, extjs, dwr, etc.
11. Plug-ins ui: easyui, miniui, etc.
12. Riches Boîtes de texte: Ueditor, Ckeditor, etc.
6. Posez des questions dans l'entretien
1. Pour quelle entreprise le projet a-t-il été développé? Combien coûte l'investissement dans le projet?
2. Combien de personnes ont participé au développement de projets? Quelle est la proportion de testeurs, de développeurs et de chefs de projet dans toute l'équipe?
3. Depuis combien de temps le projet a-t-il été développé? Combien de code y a-t-il dans le projet total? Combien de code y a-t-il?
4. Quel type de modèle de développement ou de processus de développement le projet adopte-t-il? Quelle est l'architecture du projet? Quelle est la sélection technique du projet?
5. Quelles responsabilités avez-vous assumé dans le projet? Avez-vous souvent des réunions ou des heures supplémentaires? Quels sont les gains ou les leçons apprises une fois le projet terminé?
6. Quelle est la partie la plus difficile du projet? Comment résoudre divers conflits rencontrés pendant le développement de l'équipe?
7. Vous pouvez poser les questions de l'intervieweur pendant l'entretien
1. J'ai remarqué que vous avez utilisé la technologie X. Comment avez-vous résolu le problème Y?
2. Pourquoi vos produits utilisent-ils la technologie X au lieu de la technologie Y? Pour autant que je sache, bien que la technologie X ait des avantages tels que A, B, C, etc., il a également des problèmes avec D et E, tandis que la technologie Y peut résoudre les problèmes D et E.
3. Je ne connais pas très bien la technologie X que vous avez mentionnée, mais je pense que c'est une bonne solution. Pouvez-vous m'en dire plus sur la façon dont cela fonctionne?
4. Comment votre équipe planifie-t-elle le projet? Combien de réunions régulières seront là dans une semaine? Quelle est la quantité approximative de code par semaine?
5. La solution à laquelle je peux penser pour le problème x est actuellement Y. Comment résoudre ce problème?
8. Règles SAR
La règle SAR fait référence à décrire d'abord le scénario du problème, puis à expliquer les actions que vous avez prises et enfin à énoncer les résultats.
9. Principe d'entrevue
1. Voix modérée, discours clair, souriant, image personnelle et politesse.
2. Prenez l'initiative de parler à l'intervieweur des sujets qu'il souhaite pour que l'intervieweur satisfait.
3. Prenez l'initiative et parlez hardiment à l'intervieweur du contenu familier et expérimenté: projets, points techniques, etc., afin de jouer avec vos forces et d'éviter les faiblesses.
4. Vous devez exprimer que vous voulez vraiment obtenir ce poste et que vous êtes prêt à apprendre des techniques que vous ne comprenez pas.
5. Faites des exigences de traitement raisonnables en fonction de votre niveau réel.
10. Auto-évaluation
1. Capacité d'apprentissage (les gens de l'industrie informatique doivent constamment comprendre les nouvelles technologies, outils et méthodes)
2. Conscience de l'équipe (par rapport à l'héroïsme personnel, l'industrie informatique préconise davantage le travail d'équipe)
3. Résistance à la pression (l'intensité de travail de nombreuses sociétés informatiques est relativement élevée)
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.