1. 서블릿 실행 프로세스
클라이언트는 HTTP 요청을 발행하고 웹 서버는 요청을 서블릿 컨테이너로 전달합니다. 서블릿 컨테이너는 URL을 구문 분석하고 Web.xml을 기반으로 해당 서블릿을 찾아 요청 및 응답 개체를 찾은 서블릿에 전달합니다. 서블릿은 요청에 따라 요청, 요청 정보 및 기타 정보를 발행 한 사람을 알 수 있습니다. 서블릿이 비즈니스 로직을 처리 한 후에는 정보를 응답에 넣고 클라이언트에 응답합니다.
2. SpringMVC의 실행 프로세스
SpringMVC는 DispatchServlet가 코어로서의 계층 적 제어 프레임 워크입니다. 먼저 클라이언트는 웹 서버에 요청을 발행하여 요청 URL을 구문 분석하고 DispatchServlet의 매핑 URL과 일치합니다. 일치하는 경우이 요청을 DispatchServlet에 넣으십시오. DispatchServlet은 매핑 매핑 구성에 따라 해당 핸들을 검색 한 다음 처리 된 핸들에 대한 처리 권한을 넘겨줍니다. 핸들은 비즈니스 로직 처리를위한 코드를 캡슐화합니다. 핸들이 처리되면 논리적보기 모델 뷰를 DispatchServlet으로 반환합니다. 이 시점에서 ModelView는 공식적인보기가 아닌 논리적보기이므로 DispatchServlet은 ViewResource View Resource를 통해 ModelView를 구문 분석 한 다음 구문 분석 된 매개 변수를 View에 넣고 클라이언트에 반환하여 표시합니다.
3. txt 파일이 주어지면 특정 문자열이 나타나는 횟수를 얻는 방법
파일 = 새 파일 ( "e : //test.txt"); inputStream은 = new FileInputStream (파일); byte b [] = new Byte [1024]; int a = is.read (b); string [] = new String (b, 0, a) .split ( ""); int count = 0; for (int i =. 0; i <str.length; i ++) {if ( "a".equals (str [i])) count ++;} system.out.println (count); 4. Java 디자인 모델 아이디어 (단일 열 모드, 공장 모드, 전략 모드, 총 23 개의 디자인 모드)
싱글 톤 모드 : 싱글 톤 모드의 핵심에는 데이터베이스 연결, 온라인 사람 수 등과 같은 새로운 One 인스턴스 객체 모드 만 필요합니다. 일부 웹 사이트에서 볼 수있는 온라인 번호 통계는 싱글 톤 모드를 통해 구현되며, 이는 데이터베이스 또는 메모리에 타이머를 저장합니다. 누군가 로그인하면 추가하고 다시 다시 넣습니다. 누군가 로그 아웃하면 꺼내서 빼고 다시 넣습니다. 그러나 두 사람이 동시에 로그인하면 동시에 카운터를 꺼내서 동시에 추가하고 동시에 다시 넣습니다. 이런 식으로 데이터가 잘못 될 것입니다. 따라서 모든 사람들이 사용하려면 글로벌 변수의 객체가 필요하며 하나의 인스턴스 객체 만 필요합니다. 이것은 싱글 톤 모드의 적용이며, 싱글 톤 모드는 인스턴스 개체 수를 제어하고 GC 재활용에 도움이되므로 리소스를 저장합니다.
b) 정책 패턴 : 여러 클래스의 공통 방법을 새로운 클래스로 추출하여 더 쉽게 확장하고 코드의 이식성을 보장하고 유지 관리 가능성을 보장하는 것입니다. 예를 들어, 호출, 비행 및 외관 인 오리 물체를 작성해야합니다. 각 오리 클래스 가이 세 가지 방법을 작성하면 코드가 중복됩니다. 현재 오리 클래스에서 불리는 세 가지 방법을 추출하여 오리 부모 클래스에 넣어 오리가 오리 부모 클래스를 물려 받고이 세 가지 방법을 다시 작성할 수 있습니다. 이런 식으로 캡슐화 된 코드는 휴대가 가능합니다. 사용자가 Duck Can 수영과 같은 새로운 요구 사항을 제안하면 OO 프로그래머에게는 매우 간단합니다. 우리는 Duck Parent Class에 수영 방법을 추가하고 수영 오리가 수영 방법을 다시 작성하도록해야합니다.
c) 공장 모드 : 간단한 공장 모드는 주로 통일 된 방식으로 인스턴스 객체에 대한 참조를 제공하고 공장 모드 인터페이스를 통해 인스턴스 객체에 대한 참조를 얻습니다. 예를 들어 로그인 함수의 경우 백엔드에는 컨트롤러 클래스, 인터페이스 클래스 및 구현 인터페이스의 구현 클래스의 세 가지 클래스가 있습니다. 클라이언트가 요청을 발행하면 요청이 컨트롤러 클래스로 전달되면 컨트롤러는 인터페이스의 참조 객체를 얻고 구현 클래스는 인터페이스가 로그인 비즈니스 로직 코드를 캡슐화합니다. 등록 요구 사항을 추가 해야하는 경우 인터페이스 클래스에 등록 메소드를 추가하고 구현 클래스에서 메소드를 구현하면 컨트롤러가 원래 코드를 변경하지 않고 인터페이스의 참조 객체를 얻을 수 있습니다. 이 접근법은 매우 확장 가능합니다.
5. 버블 분류, 이진 검색
a) 거품
public static void mp (int a []) {int swap = 0; for (int i = 0; i <a.length; i ++) {for (int j = i; j <a.length; j ++) {if (a [j]> a [i]) {swap = a [i]; a [j]; a [j] =. SWAP;}}} system.out.println (arrays.tostring (a));}b) 이진 검색
public static int ef (int a [], int tag) {int first = 0; int end = a.length; for (int i = 0; i <a.length; i ++) {int middle = (첫 번째 + 끝) / 2; if (tag == a [middle]) {return middle;} if (tag> a [middle]) {middle = middle -1;} if (tag <a an middle)} if (tag <a middle)). 0;} 6-8. Ajax에 대한 이해
a) Ajax는 비동기 요청, 즉 로컬 새로 고침 기술입니다. 기존 페이지에서는 사용자가 버튼이나 이벤트를 클릭하여 페이지를 새로 고치기위한 요청을 트리거해야합니다. 비동기 기술은 클릭하지 않고 이벤트를 트리거하여 쇼핑몰에서 쇼핑 카트의 비동기로드로드와 같은 사용자 경험을 향상시킵니다. 제품을 클릭하면 배경을 요청하고 매개 변수를 동적으로 직접 수정할 필요가 없습니다.
9. 부모 수업과 아동 수업 간의 통화 순서 (인쇄 결과)
a) 부모 클래스 정적 코드 블록
b) 서브 클래스 정적 코드 블록
c) 부모 클래스 생성자
d) 서브 클래스 시공 방법
e) 서브 클래스 일반 방법
f) 부모 클래스의 메소드를 다시 작성하고 재 작성 방법을 인쇄하십시오.
10. 내부 및 외부 클래스의 호출
a) 내부 클래스는 개인을 포함하여 외부 클래스의 멤버 변수를 직접 호출하여이를 사용할 수 있습니다. 외부 클래스에서 언급 한 키워드를 호출합니다
b) 외부 클래스가 내부 클래스를 호출 할 때 내부 클래스 객체를 만들어야합니다.
11. 멀티 스레딩
a) 프로세스는 독립적 인 실행 환경으로 프로그램으로 간주 될 수있는 반면 스레드는 프로세스의 작업으로 간주 될 수 있습니다. 예를 들어, QQ는 프로세스이고 QQ 창은 스레드입니다.
b) 다중 스레드 프로그램에서 멀티 스레드 동시성은 프로그램의 효율성을 향상시킬 수 있습니다. 특정 스레드가 리소스를 기다리고 있기 때문에 CPU는 유휴 상태에 들어 가지 않습니다. 다른 스레드에 리소스를 제공합니다.
c) 사용자 스레드는 우리가 프로그램을 개발하는 스레드이며, 데몬 스레드는 JVM Virtual의 GC와 같은 시스템 스레드입니다.
d) 스레드 우선 순위 : 각 스레드의 우선 순위 수준이 있습니다. 유한 수준이 높은 사람들은 먼저 준비 상태에서 실행 상태로 스레드를 변경하기 위해 CPU 리소스를 얻을 수 있습니다. 제한된 레벨의 스레드를 사용자 정의 할 수도 있습니다
E) 교착 상태 : 최소한 두 개 이상의 스레드가 두 개 이상의 CPU 자원을 위해 노력하고 교착 상태를 피하면 중첩 잠금 장치를 사용하지 마십시오. 동기화하고 무한 대기를 피하기 위해 잠금 장치를 추가하면됩니다.
12. AOP 및 IOC의 개념 (즉, 스프링의 핵심)
a) IOC : Spring은 오픈 소스 프레임 워크입니다. 프레임 워크를 사용하면 워크로드를 줄이고 작업 효율성을 향상시킬 수 있습니다. 계층 적 구조, 즉 해당 레이어는 해당 비즈니스 로직을 처리하고 코드의 커플 링 정도를 줄입니다. Spring의 핵심은 IOC 제어 역전 및 AOP 지향 접선 프로그래밍입니다. IOC 제어 반전은 주로 프로그램 간의 관계가 컨테이너에 의해 제어되어 객체를 제어하고 외부 자원의 획득을 제어한다는 것을 강조합니다. 반전은 기존 프로그래밍에서 종속성을 얻기 위해 객체를 생성하는 반면 IOC에서는 컨테이너가 객체를 만들고 종속 객체를 주입하는 데 도움이됩니다. 컨테이너는 객체를 찾고 주입하는 데 도움이됩니다. 물체가 얻어 지므로 반전이라고합니다.
b) AOP : 지향적 프로그래밍, 주로 로그, 권한, 사물 등과 같은 시스템 수준에서 비즈니스를 관리합니다. AOP는 캡슐화 된 객체를 열고 여러 객체에 영향을 미치는 일반적인 동작을 찾아 재사용 가능한 모듈로 캡슐화해야합니다. 이 모듈의 이름은 측면입니다. 섹션은 비즈니스 로직과 관련이 없지만 비즈니스 모듈에 의해 공동으로 호출되는 논리를 추출하고 캡슐화하여 시스템의 중복 코드를 줄이고 모듈 간의 커플 링을 줄이며 시스템의 유지 관리 가능성을 향상시킵니다.
13. 최대 절전 모드의 핵심 아이디어
a) 최대 절전 모드의 핵심 아이디어는 ROM 객체 관계 매핑 메커니즘입니다. 테이블 사이의 객체 사이의 작업으로 매핑하는 것입니다. 즉, 데이터베이스에서 추출한 정보는 설정 한 매핑 요구 사항에 따라 특정 객체로 자동 캡슐화됩니다. 따라서 Hibernate는 데이터 테이블 엔티티 클래스를 매핑하여 데이터 행에 해당하는 객체를 수정하는 것입니다.
14. struts1과 struts2의 차이
15. 문자열에서 문자의 최적 삭제
16-17. ArrayList와 LinkedList의 차이점
a) 목록 인터페이스를 구현하는 모든 목록입니다. ArrayList는 배열 기반 데이터 구조이며 LinkedList는 링크 된 목록 데이터 구조입니다. 특정 요소를 얻을 때 ArrayList는 비교적 빠릅니다. Array Subscripts를 통해 얻을 수 있지만 LinkedList는 포인터를 이동해야합니다. 요소를 저장하고 요소를 삭제할 때 LinkedList가 더 효율적입니다. 배열리스트에는 데이터를 이동 해야하는 반면, 지정된 위치로 포인터를 지정된 위치로 이동하면됩니다.
18. 데이터베이스 최적화
a) 사서함 필드와 같은 적절한 필드를 선택하면 char (6)로 설정하고 필드를 NONNULL로 설정하려고 시도하여 데이터베이스가 쿼리시 널 값을 비교할 필요가 없습니다.
b) 하위 쿼리 대신 쿼리에서 왼쪽 결합을 사용하십시오.
c) Union Joint Query를 사용하여 수동으로 임시 테이블을 만듭니다.
d) 물건을 켜십시오. 데이터베이스에서 여러 문장이 실행되면 상황이 롤백되어 데이터베이스의 무결성을 유지할 수 있습니다.
e) 외래 키를 사용하면 사물은 데이터의 무결성을 유지할 수 있지만 데이터의 상관 관계를 보장 할 수는 없습니다. 외래 키를 사용하면 데이터의 상관 관계를 보장 할 수 있습니다
f) 인덱스를 사용하여 인덱싱은 데이터베이스 성능을 향상시키는 일반적인 방법입니다. 데이터베이스 서버가 인덱스가없는 것보다 훨씬 빠르게 특정 행을 검색 할 수 있습니다.
g) 최적화 된 쿼리 문. 대부분의 경우 인덱스를 사용하면 쿼리 속도를 향상시킬 수 있지만 SQL 문이 부적절하게 사용되면 인덱스는 특성을 재생할 수 없습니다.
19. Tomcat 서버 최적화 (메모리, 동시 연결 수, 캐시)
a) 메모리 최적화 : 주로 Tomcat 시작 매개 변수를 최적화합니다. Tomcat 스타트 업 스크립트에서 최대 메모리를 수정할 수 있습니다.
b) 스레드 카운트 최적화 : Tomcat의 동시 연결 매개 변수는 주로 시스템 처리 성능을 개선하는 데 사용되는 최소 유휴 연결 스레드 수정과 같은 Tomcat 구성 파일의 Server.xml에서 주로 구성됩니다.
c) 캐시 최적화 : 압축 기능을 켜고 매개 변수를 수정하십시오. 예를 들어, 압축 출력 함량의 크기는 기본적으로 2KB이며 적절하게 수정할 수 있습니다.
20. HTTP 프로토콜
a) 일반적으로 사용되는 요청 방법에는 get and post가 포함됩니다
b) GET 및 POST의 차이 : 전송 데이터, GET CARMER 매개 변수 및 액세스 주소 및 사용자가 확인할 수 있습니다. 이것은 안전하지 않으며 정보 유출로 이어질 것입니다. 게시물은 전송할 엔티티의 필드 및 해당 값을 캡슐화하며, 이는 사용자가 보이지 않습니다. 전달되는 매개 변수에 대한 제한 사항이 있지만 게시물에는 제한이 없습니다.
21. TCP/UDP 프로토콜
22. Java Collection 클래스 프레임 워크의 기본 인터페이스는 무엇입니까?
a) 컬렉션 인터페이스, 목록 및 세트 구현 컬렉션 인터페이스, 배열리스트 및 링크 목록, 벡터 구현 목록 인터페이스, 스택 상속 벡터, 맵 인터페이스, 해시 가능 및 해시 맵 맵 인터페이스 구현
23. 클래스 로딩 프로세스
a) 새 클래스를 만나면 먼저 메소드 영역으로 이동하여 클래스 파일을 찾습니다. 발견되지 않으면 하드 디스크로 이동하여 클래스 파일을 찾습니다. 그것을 찾은 후에는 그것을 반환하고 클래스 파일을 메소드 영역에로드합니다. 클래스가로드되면 정적 멤버 변수가 메소드 영역의 정적 영역에 할당됩니다. 비 정적 멤버 변수는 비 정적 영역에 할당됩니다. 그런 다음 정적 멤버 변수를 초기화하고 기본값을 할당하기 시작합니다. 기본값을 할당하면 정적 멤버 변수가 작성한 위치에 따라 디스플레이 값이 할당 된 다음 정적 코드가 실행됩니다. 클래스 로딩은 모든 정적 코드가 실행될 때만 완료됩니다.
24. 객체 생성
a) 새 클래스가 발생하면 클래스가로드되고 클래스 파일이 있습니다.
b) 모든 정적 멤버 변수 초기화, 정적 코드 블록도 실행되며 클래스가로드 된 경우에만 실행됩니다.
c) 새 개체 일 때 JVM은 힙에 충분히 큰 저장 공간을 할당합니다.
d) 저장 공간을 지우고 모든 변수에 기본값을 지정하고 모든 객체 참조를 NULL에 할당합니다.
e) 필드에 작문 위치에 따라 일부 초기화 작업을 제공합니다.
f) 생성자 메소드 호출 (상속 없음)
25. JVM 최적화
a) 매개 변수를 설정하고 JVM의 최대 메모리 수를 설정
b) 쓰레기 수집기 선택
26. 높은 동시성 처리
a) 모든 사람이 티켓을 구매하지 않고 티켓을 볼 수 있도록하는 방법과 같은 높은 동시성 문제를 이해하십시오. 동기화 메커니즘은 동기화 메커니즘을 사용할 수 없습니다. 동기화는 잠금되고 동기화는 한 번에 한 사람 만 수행 할 수 있기 때문에 사용할 수 없습니다. 현재 잠금 메커니즘을 사용할 수 있으며 낙관적 잠금을 사용하면이 문제를 해결할 수 있습니다. 낙관적 잠금의 단순한 의미는 비즈니스 제어를 사용하여 테이블을 잠그지 않고 동시성 문제를 해결하는 것입니다. 이는 데이터의 가독성과 저장된 데이터의 독점 성을 보장하여 동시성으로 인한 더러운 읽기 데이터 문제를 해결하면서 성능을 보장합니다.
27. 사물에 대한 이해
a) 사물은 원자, 일관성, 지속적이며 고립되어 있습니다
b) 원자력 : 모든 실행이 성공적이거나 모든 실패로 롤백하는 것을 말합니다.
c) 일관성 : 실행 전후 일관성
d) 지속성 : 사물에서 여러 데이터의 작동은 영구적입니다.
e) 격리 : 한 가지가 데이터에서 작동하는 경우, 다른 방법은 데이터에서 작동 할 수 없습니다. 즉, 여러 동시에 서로 분리됩니다.
28. 스트럿 워크 플로
a) 클라이언트는 서블릿 컨테이너에 대한 요청을 발행합니다.
b) 일부 열 필터링 후 FilterDispatcher가 요청을 호출하고 FilterDispatch는 ActionMapper를 통해 해당 조치를 검색합니다.
c) ActionMapper는 해당 작업을 찾아 FilterDisPatch로 반환하고 Dispatch는 ActionProxy에 대한 처리 권한을 부여합니다.
d) ActionProxy는 구성 파일을 통해 해당 조치 클래스를 찾습니다.
e) ActionProxy는 비즈니스 로직을 처리하기 위해 ActionIinvocation 인스턴스를 만듭니다.
f) 조치가 처리되면 ActionInvocation은 stuts.xml의 구성에 따라 해당 반환 결과를 찾는 역할을합니다. 결과는 일반적으로 JSP 페이지입니다.