기술질문
Url 입력시 과정에 대해 설명
로컬 도메인 검색하고 없으면 도메인 서버에 요청해서 ip 주소를 찾아서 7계층을 거친다.
3 핸드 쉐이킹을 통해서 연결을 하고 서버에서 데이터를 패킷단위로 전송받는다.

다형성 : 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미 Parent pc = new Child();
Map과 hash_map의 차이 특정 키에 대한 값을 찾는 과정이 다르다. red-black tree , hash table 이용
map은 Java의 인터페이스로, 키와 값의 쌍(key-value pair)을 저장하는 데이터 구조를 정의합니다.
HashMap은 Map 인터페이스를 구현한 구현체입니다. 내부적으로 해시 테이블(Hash Table)을 사용하여 데이터를 저장합니다.
OOP 란? 객체의 관점에서 프로그래밍 하는 것
서버-클라이언트간에 어떤 프로토콜을 쓸 것인지 : https : ssl 인증서 때문에
프로세스 : 실행되고 있는 프로그램
프로시져 : 자주 사용하는 sql문을 DB 객체로 생성해서 저장하고 사용할때 프로시저 명을 호출
쓰레드 : 프로세스가 할당받은 자원을 이용하는 실행 단위
쓰레드간 통신 : 전역변수 참조 하는 방식으로, 단 Synchronized 필요
프로세스간 통신 : 공유 메모리 , 커널 메모리 영역에 채널을 만듬 , 파이프
상호배제 : 프로세스 하나가 공유 자원을 사용할 때, 다른 프로세스들이 사용 못하게 하는 방법
임계 구역 : 프로그램 코드에서 공유 자원에 접근하는 부분 Lock 과 unLock사이
세마포어 : 스레드에 접근할 수 있는 프로세스의 개수를 통제 할수 있게 합니다.
뮤텍스 : 1개의 스레드만이 공유 자원에 접근할 수 있도록 합니다.
Lock은 보통 병렬처리시 메모리에 쓰기할때
발생할수있는 레이스컨디션 때문에 사용
읽기에는 lock을 걸지않음
데드락이란? 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황
스택 : 차곡차곡 쌓아 올린 형태의 자료구조
큐 : 선입선출(FIFO,First in first out) 방식의 자료구조
접근제어자
public
protected 같은패키지, 상속관계인 클래스
default 같은패키지
private 같은클래스
DML 인서트 딜리트 업데이트 셀렉트
DDL 정의어 CREATE, ALTER, DROP
DCL 권한주고 뺏기 GRANT REVOKE
static : 객체 생성없이 바로 사용
synchronized : 사용하고 있는 스레드를 제외하고 다른 스레드들은 접근 못하는 개념
오버로딩 : 같은 이름의 메서드 매개변수만 다르게
오버라이딩 : 부모클래스에서 정의한 메서드를 자식 클래스 에서 재정의
싱글톤 : 어플리케이션에서 하나의 인스턴스,
전역 접근 가능, 인스턴스 공유
보통 전역 로깅 객체를 통해 로그를 기록 할때 사용
Spring Framework 란? 자바 플랫폼 을 위한 프레임워크
스프링의 장점 설정을 최소화 하고 개발에 집중
객체는 무엇인가? 메모리(실제 저장공간)에 할당된 것
Restful API :
자원을 이름으로 구분하여 주고 받는것을 REST 라고 한다.
REST API’를 제공하는 웹 서비스를 ‘RESTful’
DI 의존성 주입 , @Autowired
loC 제어의 역전, 프로그램의 흐름이 개발자 말고 프레임워크에 있다.
AOP란 무엇이고 왜 사용하는지
관점지향 프로그래밍
비즈니스 기능과 공통 기능으로 '구분'하고, 공통 기능을 필요한 시점에 적용하는 프로그래밍 방법
동기 : 결과가 주어질 때까지 아무것도 할수 없음
비동기 : 다른 작업을 할 수 있음.
http1 과 http2의 차이점을 설명해보라. 1은 연결당 하나의 요청과 응답을 처리
Java 메모리에 대해 설명 java > javac(컴파일러) > .class
MVC 1 vs. MVC 2 : view와 컨트롤러가 합쳐진 형태 요청을jsp가함
Servlet 수정된 경우 java 파일을 컴파일 해야 한다.
JSP html 코드 안에 java 코드 / 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리
추상클래스 abstract , extends 이용
구현부가 없는 추상메서드를 포함한 클래스
클래스를 상속받아 이용 및 확장을 위함
단일상속만
인터페이스를 쓰는 가장 큰 이유 다중상속 때문에 사용합니다.
인터페이스 implements
구현하려는 객체의 동작을 표현
다중 상속가능
fianl 키워드란?
클래스: 상속불가
메소드: 오버라이딩 불가
상수를 정의할때 final int a =10;
Dispatcher Servlet : HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임
스프링 컨테이너: 스프링의 빈을 생성하고 관리
빈(Bean) 자바 객체
빈팩토리(Bean Factory) : 빈의 생성과 관계제어를 담당 합니다.
application context :
빈팩토리 외에 추가적인 기능이 필요하여 빈 팩토리를 상속받아서 이용
@Configuration( Bean을 등록하기 위한 애노테이션 )
오토와이어링 : @Autowired / Bean을 선언하지 않고, DI 컨테이너에 빈을 자동으로 주입
Call by Reference / Call by Value : 참조에 의한 호출 / 값에 의한 호출(복사)
JSON, XML 데이터를 저장하고 전달하기 위해 고안 / XML은 배열 X , JSON은 배열사용 가능
빈스코프 : 싱글톤 , 프로토타입 , request , session , global
filter DispatcherServlet 요청 전 수행 / 실행되는 시점이 요청 전으로 제한됨 / 하나의 요청에 여러 filter 가능
interceptor DispatcherServlet 실행 후 동작 / 실행되는 시점을 세밀하게 설정가능
Listener 특정 상황을 모니터링 하다가 해당 상황이 발생하면 동작
javax.servlet.ServletContextAttributeListener : 서블릿 컨텍스트에 속성의 추가/삭제/수정
javax.servlet.http.HttpSessionListener : 세션상태변화(사용자 접속현황)
javax.servlet.ServletRequestListener : 사용자 요청 발생시
javax.servlet.ServletRequestAttributeListener : Request 속성의 추가/삭제/수정
javax.servlet.http.HttpSessionBindingListener : 속성을 넣고자 하는 대상이 세션에 포함되어 있는지 확인
javax.servlet.http.HttpSessionAttributeListener : 세션 속성의 추가/삭제/수정
javax.servlet.ServletContextListener : 애플리케이션 컨텍스트 생성/소멸
javax.servlet.http.HttpSessionActivationListener : 세션의 활성화 상태
NoSQL 기본 개념 데이터의 저장 및 검색을 위해 특화됨 / 관계형 DBMS 특성 + 다른 특성들을 부가적으로 지원
@autowired , @inject , @Resources 3가지 차이점
@autowired , @inject 는 타입 기준으로 주입을 하고 스프링에 의존적
@Resource 는 이름을 기준으로 주입하고 자바에서 제공
가비지 컬렉터는 무엇인가? 할당된 메모리 영역에서 필요없는 영역을 회수
자바 컬렉션 프레임워크 사용 이유와 종류 리스트, 스택, 큐, 트리 등으로 구조화 해 놓은 프레임워크
check exception / uncheck exception의 차이
CheckedException | UncheckedException |
반드시 예외 처리 | 강제하지 않음 |
컴파일단계에서 확인 | 실행단계에서 확인 |
IOException FileNotFoundException ClassNotFoundException DataFormatException | RuntimeException | -- ArithmeticException | -- NullPointerException 실행중 발생되는 예외. |
스프링에서 어떤 exception 에서 롤백? uncheck exception 의 경우 롤백 처리를 한다.
@Transactional(rollbackFor = Exception.class) 기본값이 RuntionException , error 입니다.
String vs StringBuffer/StringBuilder
변하지 않는 문자열을 자주 읽어들이는 경우 String
StringBuffer / StringBuilder : 가변(mutable)성이 있을때 이용, .append() .delete() 등을 이용하여 문자열을 변경
== 와 Equals() 메서드의 차이 대상의 주소 값을 비교 / 대상의 값을 비교
Forward vs Redirect : request, response 공유 하는지 안하는지 차이( forward 는공유 / redirect 는 새로 생성 )
Cookie vs. Session 클라이언트의 상태 정보를 클라이언트 / 서버에 저장
TCP vs. UDP : 신뢰성있는 전송이 중요할 때에 사용 / 비연결형 프로토콜로 전송순서가 보장되지 않는다.
웹서버와 웹클라이언트의 차이 : 웹서비스 하는 서버 / 웹서버에 자료를 요청하는 프로그램
3-hands-shaking이란? CLIENT가 SERVER와 SSL 통신을 하기위해 협상

종료시 4 hands-shaking
클라이언트 헬로 ,
서버 헬로,
서버가 인증서 전달 ,
클라이언트가 서명하여 서버에 전달,
서버가 Finish
Cache를 사용하는 이유는?
데이터나 값을 미리 복사해 놓는 임시 장소로써, 빠른 속도로 데이터에 접근 해야 하는 경우 이용
Junit 테스트는 어떻게 실행하는가?
@Before, @After, @Test -> 각 메서드의 실행 순서는 보장하지 않는다
즉, 테스트는 독립적이고 원자적이어야만 한다
Junit 테스트를 실행할 때 어떤 일이 일어나 ?
테스트가 성공, 실패 후에 @After 어노테이션으로 선언한 메서드(public void 속성이다) 가 호출
테스트가 성공인지 어떻게 증명할 수 있는가? : assert Class 이용
assertEquals 두 개의 객체가 자신들의 equals 메서드에 따라 같은지 비교한다.
assertTrue와 assertFalse 주어진 상태를 Boolean 예상치와 비교한다
assertNotNull 객체가 null이 아니다
assertArrayEquals 두 배열에 같은 값이 있다. Object 배열의 비교라면 equals 메서드로 동일성을 검사한다.
테스트가 예상햇던 시간 안에 완료되지 않으면, 테스트가 실패되게 만들 수 있는가?
@Test 어노테이션은 두 개의 매개변수를 받을 수 있음
1. 특정 타입의 예외가 발생했을 때 테스트를 통과하게 하는 expected
2. timeout //long 타입임, 밀리세컨드 단위
@Test(expected = NullPointerException.class) @Test(timeout = 1000L)
단위 테스트와 통합 테스트의 차이는 무엇인가?
모듈을 독립적으로 테스트 / 모듈이 그룹으로 결합 될 때 잘 작동하는지 확인
WAR 파일이란? 웹 아카이브 Web Archive 파일 :웹 어플리케이션을 압축
톰캣은 웹 애플리케이션을 어떻게 관리?
톰캣은 WEB-INF 하위에 있는 web.xml 파일을 읽고 정의된 대로 애플리케이션을 실행하고
클라이언트에게 제공합니다.
서블릿 API에서 요청 매개변수들을 어떻게 처리?
요청이나 응답에 대한 HttpServletRequest 객체와 HttpServletResponse 객체를 만들고
서블릿의 doGet()이나 doPost() 메서드를 호출하며 만든 객체들을 전달하여 처리합니다.
빌드 도구 이용해 개발하기
메이븐이란? 필요한 라이브러리를 pom.xml 에 정의해 놓으면자동으로 다운받아줍니다.