>  기사  >  Java  >  Java 프로그래머에게는 어떤 전문 기술이 필요합니까?

Java 프로그래머에게는 어떤 전문 기술이 필요합니까?

零下一度
零下一度원래의
2017-06-27 09:16:191833검색

자격을 갖춘 Java 프로그래머 또는 엔지니어가 되려면 어떤 전문 기술이 필요합니까? 면접관은 면접 전에 무엇을 준비해야 합니까? 이 기사에 표시된 내용은 이력서의 내용으로 사용될 수도 있고 면접 중에 면접관과 대화할 내용으로 사용될 수도 있습니다. 물론 이 내용을 이력서에 작성할 수도 있습니다. 면접관은 이러한 전문적인 기술을 보여줍니다. 이 글은 자바 프로그래머(Java 엔지니어) 자리를 찾고 있는 신입생은 물론, 중급 및 고급 자바 개발자가 되고 싶은 후배들에게도 도움이 될 것이라고 믿습니다.

전문 능력

  1. 객체 지향 프로그래밍을 위한 Java 언어 사용에 능숙하고, 프로그래밍 습관이 좋으며, 컬렉션 프레임워크, 멀티스레딩(동시 프로그래밍), I/O 등 일반적으로 사용되는 Java API에 익숙합니다. (NIO) , 소켓, JDBC, XML, 리플렉션 등

  2. JSP 및 Servlet 기반 Java 웹 개발에 익숙하고, Servlet 및 JSP의 작동 원리 및 라이프사이클에 대해 깊이 이해하고, JSTL 및 EL을 사용하여 스크립트 없는 동적 페이지를 작성하는 데 능숙하며, 리스너, 필터 등의 웹 구성 요소 및 MVC 아키텍처 패턴을 사용한 Java 웹 프로젝트 개발 경험.

  3. Spring의 IoC 컨테이너 및 AOP 원칙에 대한 심층적인 이해, Spring 프레임워크를 능숙하게 사용하여 다양한 웹 구성 요소 및 해당 종속성 관리, Spring을 능숙하게 사용하여 트랜잭션, 로그, 보안 등을 관리하고, Spring MVC 경험을 사용함 웹 프로젝트 개발에서 프레젠테이션 계층 기술로, Spring에서 제공하는 지속성 지원을 사용하여 Spring의 다른 프레임워크 통합에 익숙합니다.

  4. Hibernate 및 MyBatis와 같은 ORM 프레임워크 사용에 능숙하고, Hibernate 및 MyBatis의 핵심 API에 익숙하며, Hibernate의 연관 매핑, 상속 매핑, 컴포넌트 매핑, 캐싱 메커니즘, 트랜잭션 관리 및 성능에 대한 심층적인 이해가 있습니다. 동조.

  5. 웹 프론트엔드 개발을 위한 HTML, CSS, JavaScript 사용에 능숙하고, jQuery 및 Bootstrap에 익숙하며, 웹 프로젝트에서 Ajax 기술 적용에 대한 깊은 이해가 있으며, 프론트엔드 MVC 프레임워크(AngularJS)를 사용합니다. ) 및 JavaScript 템플릿 엔진(HandleBars) 프로젝트 개발 경험이 있습니다.

  6. 일반적으로 사용되는 관계형 데이터베이스 제품(MySQL, Oracle)에 익숙하고 데이터베이스 프로그래밍을 위한 SQL 및 PL/SQL 사용에 능숙합니다.

  7. 객체지향 설계 원칙에 익숙하고 GoF 설계 패턴 및 엔터프라이즈 애플리케이션 아키텍처 패턴에 대한 심층적인 이해와 실제 개발 관련 경험이 있으며 객체지향 분석 및 설계를 위한 UML 사용에 능숙하며 TDD(테스트 기반 개발) 및 DDD(Domain Driven Design) 경험이 있습니다.

  8. Apache, NginX, Tomcat, WildFly, Weblogic 등의 웹 서버 및 애플리케이션 서버 사용에 익숙하고 다중 서버 통합, 클러스터링 및 로드 밸런싱 구성에 익숙합니다.

  9. 제품 프로토타이핑 툴 활용에 능숙 Axure, 디자인 모델링 툴 활용에 능숙 PowerDesigner, Enterprise Architect 활용에 능숙, Java 개발 환경 사용에 능숙 Eclipse, IntelliJ, 프론트엔드 개발 환경 WebStorm 활용에 능숙, 소프트웨어 버전 관리 툴 활용에 능숙 SVN 및 Git을 갖추고 있으며 프로젝트 구축 및 관리 도구인 Maven 및 Gradle을 능숙하게 사용합니다.

참고: 위에 나열된 사항을 모두 숙지할 필요는 없습니다. 회사 채용의 특정 요구 사항에 따라 해당 목표 준비를 할 수 있습니다. 개인적으로 처음 6가지 항목은 최소한의 요구사항이자 Java 개발자가 갖춰야 할 전문적인 기술이라고 생각합니다.

프로젝트 경험

프로젝트 소개

  이 시스템은 X에서 의뢰하여 Z를 위해 Y에서 개발한 시스템입니다. 시스템에는 A, B, C, D 및 기타 모듈이 포함됩니다. 이 시스템은 Java 엔터프라이즈급 오픈 소스 프레임워크 E와 프런트엔드 기술 F를 사용합니다. 프리젠테이션 레이어는 G 아키텍처를 사용하고, H를 뷰로, I를 컨트롤러로 사용하고, 비즈니스 로직 레이어는 J 패턴을 사용하고, K를 통해 트랜잭션, 로그, 보안 등의 기능을 구현합니다. L을 통한 서비스; 지속성 계층은 M을 사용하여 CRUD 작업을 캡슐화하고 맨 아래 계층은 N을 사용하여 데이터 액세스를 구현합니다. 전체 프로젝트는 P 개발 모델을 채택했습니다.

참고: 위 설명에서 E는 일반적으로 Spring(Java 엔터프라이즈 개발을 위한 원스톱 선택)을 나타냅니다. F는 jQuery 라이브러리 및 해당 플러그인 또는 Bootstrap 프레임워크일 가능성이 높습니다. 단일 페이지 애플리케이션(SPA)을 구축하려는 경우 가장 좋은 솔루션은 프런트 엔드 MVC 프레임워크(예: AngularJS) 및 JavaScript 템플릿 엔진(예: HandleBars)이며 G는 분명히 MVC(Model-View-Control)입니다. 가장 가능성이 높은 구현 프레임워크는 Spring MVC이며, JSF용 Apache에서 제공하는 Struts 2, JSF 및 MyFaces 구현이 있습니다. MVC에서 JSP를 V로 사용할 수 있으며 템플릿 엔진(예: Freemarker 및 Velocity)을 사용할 수도 있습니다. 뷰를 생성하고 다양한 문서나 보고서(예: Excel, PDF 등)를 사용할 수도 있으며 MVC에서는 서블릿 및 사용자 정의 컨트롤러가 C입니다. 물론 Spring MVC는 DispatcherServlet을 프런트엔드 컨트롤러로 제공합니다. 일반적으로 트랜잭션 스크립트이며 K는 AOP(관점 지향 프로그래밍) 기술이어야 하며 L은 현재 Memcached이고 Redis가 널리 사용됩니다. M에는 Hibernate와 MyBatis가 가장 많이 사용됩니다. 동시에 추가, 삭제 및 수정은 일반적으로 Hibernate에 의해 처리되는 반면, 복잡한 쿼리는 MyBatis에 의해 처리됩니다. 또한 TopLink 및 jOOQ는 전통적으로 관계형 데이터베이스를 사용하는 뛰어난 지속성 레이어 솔루션입니다. MySQL, Oracle, SQLServer, DB2 등과 같은 빅데이터 시대의 도래와 함께 NoSQL(예: MongoDB, MemBase, BigTable 등) 및 기타 빅데이터 액세스 솔루션(예: GFS, HDFS)도 사용할 수 있습니다. 등), 프로젝트 개발 모델 P는 폭포 모델, 신속한 프로토타입 모델, 증분 모델, 나선형 모델, 분수 모델, RAD 모델이 될 수 있습니다.

프로젝트 개발 프로세스

  1. 타당성 분석>>> 타당성 분석 보고서/프로젝트 개발 계획

  2. 요구사항 분석>>>>> , 시퀀스 다이어그램, 액티비티 다이어그램)

  • 인터페이스 프로토타입: 비즈니스 계층 설계 시 요구 사항 이해 및 트랜잭션 스크립트 도출에 도움

  • Design>>> 요약 설계 사양/상세 설계 사양

  • 사업 추출 엔터티(도메인 개체): 클래스 다이어그램, E-R 다이어그램(개념 설계 단계)

    • 계층형 아키텍처: 각 계층의 기술 구현 계획을 결정합니다(사용되는 프레임워크, 데이터베이스 서버, 애플리케이션 서버 등에 따라 다름). 비즈니스 계층 설계: 트랜잭션 스크립트 모드(트랜잭션: 사용자가 보내는 요청은 트랜잭션입니다. 스크립트: 메서드 또는 함수, 트랜잭션 스크립트: 요청을 메서드 또는 함수로 캡슐화합니다. 트랜잭션 스크립트 모드: 트랜잭션이 스크립트로 시작됩니다. 열기, 스크립트 종료 시 종료). 비즈니스 계층에는 트랜잭션 스크립트 클래스(비즈니스 프로세스 캡슐화), 데이터 액세스 객체(DAO, 지속성 작업 캡슐화) 및 데이터 전송 객체(DTO, 혈액 손실/빈혈 필드 객체 캡슐화)의 세 가지 유형의 객체가 있습니다. 데이터 전송 객체

    • 순방향 엔지니어링(UML 클래스 다이어그램이 Java 코드 생성)과 리버스 엔지니어링(Java 코드가 UML 클래스 다이어그램 생성)에 의존하는 트랜잭션 스크립트 클래스 조합(집계) 데이터 액세스 객체 간의 관계

    • 데이터베이스 물리적 설계(ER 다이어그램을 테이블 간 관계 다이어그램으로 변환, 데이터베이스 및 테이블 구축, 도구를 사용하여 테스트 데이터 삽입)

    • Coding

  • Test>>>>>

  • 단위 테스트: 소프트웨어에서 테스트 가능한 가장 작은 단위를 확인하고 검증하는 것입니다. Java에서는 JUnit 도구를 사용하여 구현할 수 있는 클래스의 메소드를 테스트하는 것입니다.

    • 통합 테스트: 통합 테스트는 어셈블리 테스트 또는 공동 테스트라고도 합니다. 단위 테스트를 기반으로 모든 모듈은 설계 요구 사항에 따른 테스트를 위해 하위 시스템으로 조립됩니다.
    • 시스템 테스트: 확인된 소프트웨어, 하드웨어, 주변 장치, 네트워크 및 기타 요소를 결합하여 정보 시스템의 다양한 조립 테스트 및 확인 테스트를 수행합니다. 시스템 테스트는 전체 제품 시스템에 대한 테스트입니다. 시스템은 요구사항 사양의 정의를 충족하고, 요구사항 사양과의 불일치 또는 모순을 찾아내고, 보다 완전한 솔루션을 제안합니다.
    • 수락 테스트: 소프트웨어 제품이 단위 테스트, 통합 테스트 및 시스템 테스트를 완료한 후 제품이 출시되기 전에 소프트웨어 테스트 활동이 수행됩니다. 이는 전달 테스트라고도 알려진 기술 테스트의 마지막 단계입니다. 승인 테스트의 목적은 소프트웨어가 준비되어 있고 최종 사용자가 소프트웨어의 의도된 기능과 작업을 수행하는 데 사용할 수 있는지 확인하는 것입니다.
    • 배송 및 유지관리>>> 사용자 매뉴얼/운영 매뉴얼

  • 프로젝트 관리

  • 버전 관리: CVS/SVN/Git

      자동 빌드: Ant/Maven / 아이비 /Gradle
    • 지속적 통합: Hudson/Jenkins
    • 시스템 아키텍처

    로드 밸런싱 서버: F5, A10

      애플리케이션 서버:
      • HTTP 서버: Apache, NginX(HTTP, 역방향 프록시, 메일 프록시 서버)

      • 서블릿 컨테이너: Tomcat, Resin

      • EJB 컨테이너: WildFly(JBoss Application Server), GlassFish, Weblogic, Websphere

    • 데이터베이스 서버: MySQL, Oracle

    타사 도구(플러그인) 애플리케이션

    • Chart 도구: jQuery 기반 차트 플러그인(예: jQchart, Flot, Charted 등) .), Chart.js, Highcharts 외.

    • 보고 도구: Pentaho Reporting, iReport, DynamicReports 등

    • 문서 처리: POI, iText 등

    • 워크플로 엔진: jBPM, OpenWFE, Snaker, SWAMP 등

    • 작업 예약: Quartz, JobServer, Oddjob 등

    • 캐싱 서비스: EhCache, memcached, SwarmCache 등

    • 메시지 대기열: Open-MQ, ZeroMQ 등

    • 보안 프레임워크: Shiro, PicketBox 등

    • 검색 엔진: IndexTank, Lucene, ElasticSearch 등

    • Ajax 프레임워크: jQuery, ExtJS, DWR 등

    • UI 플러그인: EasyUI, MiniUI 등

    • 리치 텍스트 상자: UEditor, CKEditor 등

    면접 질문

    • 어떤 회사를 위해 개발된 프로젝트인가요? 프로젝트에 대한 투자는 무엇입니까?

    • 프로젝트 개발에는 몇 명이 참여했나요? 전체 팀에서 테스터, 개발자, 프로젝트 관리자의 비율은 어떻게 되나요?

    • 프로젝트가 개발된 지 얼마나 되었나요? 프로젝트의 전체 코드량은 얼마입니까? 코드가 얼마나 있나요?

    • 프로젝트에서는 어떤 종류의 개발 모델이나 개발 프로세스를 채택하나요? 프로젝트의 구조는 무엇입니까? 프로젝트의 기술 선택은 무엇입니까?

    • 프로젝트에서 어떤 책임을 맡나요? 회의가 잦거나 야근을 하시나요? 프로젝트를 완료한 후 얻은 이득이나 교훈은 무엇입니까?

    • 프로젝트를 하면서 가장 어려웠던 점은 무엇이었나요? 팀 개발 과정에서 발생하는 다양한 갈등을 해결하는 방법은 무엇입니까?

    참고: 실제 프로젝트 경험이 없는 사람들은 51job, Zhaopin, Lagou.com과 같은 웹사이트에서 Java 프로그래머를 모집하는 회사를 검색하고 공식 웹사이트를 찾아 그들이 수행하는 프로젝트에 대해 알아볼 수 있습니다. 프로젝트의 자세한 소개를 확인하신 후, 일부 기능을 완성해 보시고 자신의 디자인과 코드가 적합한지 전문가에게 문의하시는 것이 가장 좋습니다.

    면접 질문

      일반적인 Java 면접 질문은 "Java 면접 질문 모음", "Java 인터뷰 질문 전체 모음", "Interview Programme 질문 보충 자료"로 정리되었으며 다른 기사도 내 블로그에 속속 게시되었습니다. 앞으로도 계속해서 면접 질문을 모아서 게시하겠습니다.

    기타

    자주하는 실수

    1. 컴퓨터로만 연습

    2. 행동면접 연습 안함

    3. 모의면접 훈련 안함

    4. 답변을 외우려함

    5. 하지마 문제 해결 아이디어를 큰 소리로 말하지 마세요

    6. 코드가 충분히 엄격하지 않습니다

    7. 테스트 코드를 작성하지 마세요

    8. 쉽게 포기하세요

    면접관에게 질문을 다시 할 수 있습니다. 인터뷰

    1. Me X 기술을 사용했다는 것을 알았습니다. Y 문제를 어떻게 해결하셨나요?

    2. 귀사의 제품은 왜 Y 기술 대신 X 기술을 사용합니까? 내가 아는 한, X 기술에는 A, B, C 등의 이점이 있지만 D와 E 문제도 있으며, Y 기술은 D와 E 문제를 해결할 수 있습니다.

    3. 나는 당신이 말하는 X 기술에 대해 잘 알지 못하지만 그것이 좋은 솔루션이라고 생각합니다. 그것이 어떻게 작동하는지 더 자세히 알려주실 수 있나요?

    4. 팀에서는 프로젝트를 어떻게 계획하나요? 일주일에 몇번의 정기모임이 있나요? 주당 대략적인 코드 양은 얼마입니까?

    5. 문제 X에 대해 제가 생각할 수 있는 유일한 해결책은 Y입니다. 이 문제를 어떻게 해결하시겠습니까?

    S.A.R 규칙

      S.A.R 규칙은 먼저 문제 시나리오를 설명한 다음 취한 조치를 설명하고 마지막으로 결과를 설명하는 것을 의미합니다.

    알고리즘 문제에 대한 다섯 가지 해결책

    1. 예제 방법: 예를 통해 일반적인 규칙을 알아보세요.

      예: 원에 새겨진 삼각형이 예각삼각형일 확률은 얼마인가요? 소고우님의 인터뷰 질문입니다. 원 위에 점 3개를 무작위로 그리고 연결하여 삼각형을 그리면 답을 알 수 있습니다.

    2. 패턴 매칭 방법

      예: 순서 있는 배열의 요소는 루프를 통해 이동되며 요소의 순서는 "3 4 5 6 1 2"가 됩니다. 배열의 요소가 다르다고 가정하고 배열에서 가장 작은 요소를 찾는 방법입니다. 이 질문은 이진 검색과 매우 유사해 보이므로 이진 검색 알고리즘을 통해 학습할 수 있습니다. 가장 작은 요소는 분명히 "mid > right"의 전환점에 나타납니다.

    3. 간소화된 일반화 방법

      설명: 문제 크기와 데이터 유형을 단순화한 다음 보편적인 해결책을 찾아보세요.

    4. 간단한 구성 방법

      예: "abcde"의 가능한 순열과 조합을 모두 찾아보세요. 먼저 "a"만 고려한 다음 "ab"의 경우를 고려하는 식으로 진행됩니다. 재귀적인 수식으로 끝날 수도 있습니다. 이 접근 방식은 종종 재귀적 접근 방식으로 발전합니다.

    5. 데이터 구조 브레인스토밍 방법

      예: 일부 숫자를 무작위로 생성하고 중앙값을 찾습니다. 이런 질문의 경우, 머릿속에 알고 있는 데이터 구조를 살펴보고 어떤 데이터 구조가 가장 적절한지 확인할 수 있습니다. 위의 질문은 큰 루트 힙과 작은 루트 힙이라는 두 개의 힙을 생성할 수 있습니다. 더 작은 요소는 큰 루트 힙에 배치되고 더 큰 요소는 작은 루트 힙에 배치됩니다. 힙 중 하나에서 요소를 다른 힙에 넣기만 하면 됩니다. 최종 중앙값은 두 힙의 루트 중 하나여야 합니다.

    고용협상

    1. 자신감을 갖고 구체적인 급여 요구사항을 제시하세요

    2. 기대보다 약간 높은 가격을 제시하세요

    3. 연봉에만 집중하지 마세요 (많은 회사들이 급여를 선호합니다) 급여보다 높음) 다른 조건에 양보)

    4. 가장 적절한 방법 사용(전화나 이메일로 급여협상 시도 가능)

    자기평가

    1. 학습능력 (IT 업계 종사자 필수) 새로운 기술, 도구, 방법에 대한 지속적인 이해)

    2. 팀 인식(IT 업계는 개인의 영웅주의보다 팀워크를 더 옹호합니다)

    3. 스트레스 저항성(많은 IT 회사의 업무 강도는 상대적으로 높음)

    Java를 배우는 학생들 주목! ! !

    위 내용은 Java 프로그래머에게는 어떤 전문 기술이 필요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.