본문으로 바로가기

신입 백엔드 개발자 기술 면접 준비

category 취업 2022. 11. 11. 22:07

*  개인적으로 면접을 준비하면서 작성한 답변지입니다.

 - 실제로 면접에서 받은 질문은 파란색

 

1.Spring Framework 사용 이유?  

- 자바개발을 편리하게 해주는 오픈 소스 프레임워크이며, 경량 컨테이너로서 자바 객체를 직접관리 할 수 있다는 장점이 있습니다. 

2. 추상 클래스와 인터페이스 차이

- 추상 클래스는 클래스 내 추상 메소드가 하나 이상 포함되거나 abstract 로 정의된 경우를 말하고, 인터페이스는 모든 메소드가 추상 메소드로만 이루어져 있는 것을 말합니다. 

- 둘 다 new 연사자로 인스턴스 생성 불가능하며 사용을 위해서 하위 클래스에서 확장/ 구현해야 한다는 공통점이 있으며, 차이점으로는 추상 클래스(단일 상속) / 인터페이스(다중 상속) 추상 클래스의 목적은 상속을 받아서 기능을 확장시키는 것(부모의 유전자를 물려받는다.) 인터페이스의 목적은 구현하는 모든 클래스에 대해 특정한 메소드가 반드시 존재하도록 강제하는 역할 (부모로부터 유전자를 물려받는 것이 아니라 사교적으로 필요에 따라 결합하는 관계) 즉, 구현 객체가 같은 동작을 한다는 것을 보장하기 위함이다. 

3. 오버로딩 vs 오버라이딩 

- 오버라이딩은 상위 클래스에 있는 메소드를 하위 클래스에서 재정의 하는 것을 말하고, 오버로딩은 매개변수의 개수나 타입을 다르게 하여 같은 이름의 메소드를 여러 개 정의하는 것을 말합니다.  

4. 접근제어자란?  

- 접근제어자는 클래스, 인터페이스, 멤버 변수, 함수 등의 접근을 제어하는 제시어를 말합니다. 접근제어자를 사용함으로써 외부 객체의 무분별한 접근으로부터 내부 데이터를 보호 할 수 있습니다. 

* public 모든 패키지의 클래스 

* protected 같은 패키지의 모든 클래스의 접근 허용, 단 다른 패키지인 경우 자식 클래스의 접근 허용 

* default  같은 패키지 내 클랙슨만 접근 허용 

* private 같은 클래스 내 접근만 허용 

 

 5. JVM 구조  

- JVM은 스택 기반으로 동작하며, Java Byte Code를 OS에 맞게 해석 해주는 역할을 하고 가비지컬렉션을 통해 자동적인 메모리 관리를 해줍니다. 

6. MVC 구조  

- 모델/뷰/컨트롤러의 약자로 각 레이어간 기능을 구분하는데 중점을 둔 디자인 패턴입니다. 

- 모델은 데이터 관리 및 비즈니스 로직을 처리하는 부분, 뷰는 비즈니스 로직의 처리 결과를 통해 유저 인터페이스가 표현되는 구간입니다. controller는 사용자의 요청을 처리하고 model과 view의 중개하는 역할을 합니다. 

7. 객체지향프로그래밍이란? 

- 모든 데이터를 객체 취급하여 처리요청을 받은 객체는 객체 그 안의 기능을 사용해 요청을 처리합니다. 특징으로는 캡슐화, 상속, 다형성, 추상화 등이 있고, 모듈 재사용으로 확장 및 유지보수가 용이합니다. 

8.다형성이란?  

 - 하나의 기능을 다양하게 사용하는 것으로 메소드나 클래스가 다양한 방법으로 동작하는 것입니다. 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해주는 것을 말합니다. 

9. ddl/dml/dcl  

 - ddl 데이터 정의어 create, alter, drop 

 - dml 데이터 조작어 select, insert, delete, update 

 - dcl 데어터 제어 commit. Rollback, grant, revoke  

10. DTO vs VO의 차이점  

 

- DTO(Data transfer Object) 는 각 계층간의 데이터 교환을 위한 객체를 말합니다. VO(Value Object) 는 실제 데이터만을 저장하는 객체를 말합니다. 

* Entity, DTO 클래스를 분리하는 이유 

- Entity와 DTO를 분리해서 관리해야 하는 이유는 DB 와 View 사이의 역할을 철저히 분리하기 위해서 입니다. 

- Entity 클래스는 실제 테이블과 매핑되어 만일 변경되게 된다면 다른 클래스에 영향을 끼치고, 

  DTO 클래스는 View와 통신하며 자주 변경되므로 분리 해주어야 합니다. (Entity 클래스 보호) 

 11. 세션과 쿠키의 차이점  

- 가장 큰 차이는 쿠키는 서버의 자원을 전혀 사용하지 않으며, 세션은 서버의 자원을 사용한다는 점입니다. 

- 쿠키는 웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일로 세션관리, 개인화, 트래킹등의 사용 목적이 있습니다. 세션은 일정 시간동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로보고 그 상태를 일정하게 유지시키는 기술, 방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 합니다. 

12. Inner join 과 Outer join  

 - 중복 없는 열을 조인한다고 가정했을 때 이너 조인은 교집합, 아우터 조인은 합집합을 얻을 수 있습니다. 

13. 프로젝트에서 사용한 자바 , 스프링버전  

14. Extends 와 implements 의 차이점  

- implements의 가장 큰 특징은 이렇게 부모의 메소드를 반드시 오버라이딩(재정의)해야 한다. extends는 일반 클래스와 abstract 클래스 상속에 사용되고, implement는 interface 상속에 사용된다. 

15. Delete 와 Truncate의 차이점 

- DELETE된 데이터는 COMMIT 명령어를 사용하기 전이라면, ROLLBACK 명령어를 통해 되돌릴 수 있습니다. 반면 truncate 전체 데이터를 한번에 삭제하며 자동 커밋되어 되돌릴 수 없습니다.

 

16. 멀티쓰레드란 

- 프로세서가 여러 개인 경우 멀티 스레드를 통해 병렬성을 높일 수 있습니다. 즉 여러 작업이 동시에 수행될 수 있습니다.  장점으로는 응답성, 자원공유, 경제성, 확장성이 있습니다.  

17. JSP   

 - java server pages 의 약자이며 html 코드에 java코드를 넣어 동적 웹페이지를 생성하는 웹 어플리케이션 도구입니다. Jsp가 실행되면 자바 서블릿으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고 그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답합니다.  

18. Heap 과 Stack 차이점  

- 자바의 메모리 공간은 크게 메소드 영역, 스택 영역, 힙 영역으로 구분되고 데이터 타입에 따라 할당됩니다. 메소드 영역 전역변수와 스택틱 변수를 저장하며 스택영역은 지역 변수와 매개변수 데이터 값이 저장되는 공간이며 메소드가 호출 될 때 메모리에 할당되고 종료되면 메모리가 해제 됩니다. 힙영역은 new 키워드로 생성되는 객체, 배열 등이 저장됩니다. 가비지 컬렉션에 의해 메모리가 관리되어 집니다. 

19. 네트워크 서버 계층 구조  

- 물리층/ 데이터링크/네트워크 층으로 구성된 네트워크 지원계층, 전송층, 세션층 응용층으로 구성된 사용자 지원계층이 있습니다. 

20. 자바의 특징  

- 객체지향 프로그래밍 언어 입니다. JVM 위에서 동작하기 때문에 운영체제에 독립적이다. 가비지 컬렉터를 통한 자동적인 메모리 관리가 가능하다. 단점으로는 jvm  위에서 동작하기 때문에 실행 속도가 상대적으로 느리다  

21. 자바의 데이터 타입 

- primitive type은 변수에 값 자체를 저장하며, reference type은 메모리상에 객체가 있는 위치를 저장합니다. 

- primitive type의 종류에는 boolean, byte, char 등이 있으며 reference type은 클래스, 인터페이스 , 배열 등이 있습니다. 

22. was 와 ws의 차이를 설명해주세요.  

was(Web Application Server)는 비즈니스 로직을 넣을 수 있음. ws(Web server)는 비즈니스 로직을 넣을 수 없음 

23. 스프링에서 빈을 등록하는 방법 

- 우선 가장 쉬운 방법으로 @Component 어노테이션을 사용하는 방법입니다. @controller, @serviece, @repository 를 각각 클래스 마다 사용합니다. 

- 다음으로 설정 클래스를 따로 만들어 @Configuration 어노테이션을 붙이고 해당 클래스 안에 빈으로 등록한 메소드를 만들어 @Bean 어노테이션을 붙여줍니다. 

24. JPA와 같은 ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요? 

- 일단 JPA 자체는 정적인 상황에서 사용하는걸 권장하기 때문에 복잡한 쿼리와 동적인 쿼리에 대한 문제가 발생하게 되는데,  그럴때는 JPQL과 Querydsl을 사용할 것을 권장하고 있습니다. 

25. 싱글톤 패턴 

- 싱글톤 패턴은 단 하나의 인스턴트를 생성해 사용하는 디자인 패턴입니다. 인스턴트가 1개만 존재해야 한다는 것을 보장하고 싶은 경우와 동일한 인스턴트를 자주 생성해야 하는 경우 경우 메모리 낭비 방지를 위해 주로 사용합니다. 

26. 가비지 컬렉션 

- 가비지 컬렉션은 jvm 메모리 관리 기법 중 하나로 시스템에서 동적으로 할당됐다 메모리 영역 중 필요없어진 메모리 영역을 회수하여 메모리를 관리해주는 기법입니다. 

27. 생성자 

- 생성하는 클래스의 같은 이름의 메소드로 객체가 생성될 때 호출되는 메소드입니다. 명시적으로 생성자를 만들지 않아도 default로 만들어지며 생성하는 파라미터를 다르겠어 오버로딩 할 수 있습니다. 

28. 커넥션 풀 

- 웹 컨테이너가 실행되면 DB와 미리 연결해놓은 객체들을 pool에 저장해 두었다가 클라이언트 요청이 오면 커넥션을 빌려주고, 처리가 끝나면 다시 커넥션을 반납받아 pool에 저장하는 방식을 말한다. 

29. HTTP와 HTTPS의 차이점 

- HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에, HTTP로 중요한 정보를 주고 받으면 제 3자에 의해 조회될 수 있습니다. 이러한 문제를 해결하기 위해 HTTP에 암호화가 추가된 프로토콜이 HTTPS입니다. HTTP는 원래 TCP와 직접 통신했지만, HTTPS에서 HTTP는 SSL과 통신하고 SSL이 TCP와 통신함으로써 암호화와 증명서, 안전성 보호를 이용할 수 있게 됩니다. 

30. Call By value와 call by reference의 차이 

- 값의 의한 호출로 인자로 받은 값을 복사하여 처리하는 방식. Call by reference는 참조에 의한 호출로 인자로 받은 값의 주소를 참조하여 직접 저장해 값에 영향을 주는 방식 

31. Cors  --> 자기소개서 작성한 내용 중 있어 받은 질문

- 도메인이 다른 2개 사이트가 데이터를 주고 받을 때 발생하는 문제 

- 교차 출처 리소스 공유, CrossOrigin Resource sharing 으로 도메인이 서로 다른 2개의 사이트가 데이터를 주고 받을 때 발생하는 문제. 브라우저는 보안 상의 이유로 스크립트에서 시작한 교차 출처 HTTP 요청을 제한한다. 

32. 동기와 비동기 

- 동기는 데이터 요청과 결과가 한 자리에서 동시에 일어나는 것을 말합니다. 즉 요청을 보낸 후 응답 결과를 받아야 다음 동작이 이루어짐. 반면 비동기는 요청을 보낸 후 응답과 상관없이 다음 방식이 동작하는 방식입니다. 자원을 효율적으로 사용할 수 있습니다. 비동기의 대표적인 예 아작스  

33. JPA 

- 자바 퍼시스트 API 자바에서 ORM 기술 표준으로 사용하는 인터페이스 모음으로 JPA는 애플리케이션과 JDBC 사이에서 동작한다. 개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용하여 sql 을 호출하여 DB와 통신한다.