실제 면접 당시 받았던 질문 위주로 정리 ( 추가 예정 )
1. LinkedList 와 ArrayList 에 대한 비교
- 검색 속도 : 인덱스 기반의 ArrayList가 속도가 더 빠르다
- 삽입, 삭제 속도 : LinkedList는 노드와 노드 참조 상태만 변경하기 때문에 더 빠르다. ArrayList의 경우 삽입, 삭제 후 추가적인 연산이 필요해 속도가 LinkedList에 비해 느리다
2. 자바 8 특징 : 람다 표현식, 스트림 API , java.time 패키지 등..
3. 자바 11 특징 : String 메소드 추가 (strip) , 람다파라미터로 var 사용 등..
4. 아파치, 톰캣 차이
- 아파치 : 웹 서버
- 톰캣 : WAS (웹 어플리케이션 서버)
5. Git에서 브랜치란 : 독립적으로 어떤 작업을 진행하기 위한 개념. 각각 브랜치는 다른 브랜치의 영향을 받지 않기 위해 여러 가지 작업 동시에 가능하다. 브랜치는 다른 브랜치와 병합 가능
6. 오버라이딩 vs 오버로딩
- 오버라이딩 : 상위 클래스의 메소드를 하위 클래스에서 재정의
- 오버로딩 : 같은 메소드 이름을 여러개 정의(매개변수의 타입이나 갯수가 달라야한다 )
7. JAVA 의 특징
- 운영체제에 독립적 : JVM에서 동작하기 때문에 , 특정 운영체제에 종속되지 않는다
- 객체지향 언어이다
- 자동으로 메모리를 관리해준다 : Garbage Collector 를 통해 자동으로 메모리 관리를 받는다.
8. 객체지향 프로그래밍이란 ?
- 데이터를 객체로 취급하여 프로그램에 반영. 객체와 객체의 상호작용을 통해 프로그램이 동작
9. MVC 패턴 : 하나의 프로젝트를 구성할때 구성요소를 Model, View , Controller 세가지 역할로 구분한 패턴
- Model : 사용자가 원하는 데이터나 정보 제공
- View : 사용자의 요청을 화면으로 출력
- Controller : 사용자의 요청을 처리, 요청에 따른 전체적인 흐름 제어
10. MVC 1 ,2 차이
- MVC 1 : View, Controller 를 한 페이지에서 작업. jsp페이지에 java, html 등 코드가 섞여 복잡하지만 설계가 간단하고 개발속도가 빨라 작은 프로젝트에 적합
- MVC 2 : jsp는 뷰의 역할 , 컨트롤러 역할은 servlet 이 수행 (비즈니스 로직 수행)
11. 스프링 프레임워크의 특징
- AOP : 관점지향 프로그래밍. 핵심 비즈니스 로직과 공통 모듈을 분리. 공통묘둘(로깅, 보안인증 등..)을 별도로 작성한 후 코드밖에서 비즈니스로직 사이에 삽입하는 것.
- IOC : 제어 역전. 객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀐 것
- DI : 의존성 주입. 객체를 직접 생성하는게 아니라 외부에서 생성한 후 주입시켜주는 방식