기술면접대비

[DO IT MYSELF] 기술면접대비 - (1)

코드사냥꾼 2020. 4. 5. 15:53

1. ArrayList와 LinkedList의 차이가 무엇인지 설명하시오.

👉🏻 ArrayList는 길이가 동적으로 변하는 가변배열입니다. 데이터를 삽입하거나 삭제할 때 내부에 임시배열을 작성 후 데이터를 복사하는 방법을 사용합니다. 반면, LinkedList는 주소형식으로 리스트를 묶은 것이기 때문에 중간에 데이터가 삽입이 되면 이전 데이터의 주소만 변경해주면 되기 때문에 데이터의 삽입 및 삭제가 용이합니다. 즉, ArrayList에 비해 공간적 제약을 받지 않는다는 장점이 있습니다.

2. 자바의 접근 제한자는 어떤 것이 있는지 설명하시오.

👉🏻 자바의 접근제한자에는 public, private, protected, default 총 4가지가 있습니다. 

1. public은 같은 패키지뿐만 아니라 다른 패키지에서도 아무런 제약 없이 사용할 수 있게 하는 접근 제한자입니다.

2. private은 오직 해당 클래스 내에서만 사용할 수 있게 하는 접근 제한자입니다.

3. protected는 같은 패키지에서는 아무런 제한 없이 사용할 수 있고 또한, 상속 관계라면 사용할 수 있게 하는 접근 제한자입니다.

4. default는 같은 패키지에서는 아무런 제한 없이 사용할 수 있지만 다른 패키지에서는 사용할 수 없게 하는 접근 제한자입니다.

3. Spring Framework와 Spring Boot의 차이가 무엇인지 설명하시오.

👉🏻 스프링 프레임워크는 설정이 복잡하고 WAS, Tomcat 등 웹 컨테이너를 설치해야 하는반면, 스프링 부트는 웹 컨테이너를 내장하고 있고 스프링 프레임워크에 비해 최소한의 설정으로 웹 어플리케이션을 구현할 수 있는 플랫폼입니다. 그러나 다소 불완전하다는 평 때문에 큰 규모의 프로젝트에서는 사용을 지양하고 있습니다.

4. ORACLE과 MySQL의 차이가 무엇인지 설명하시오.

👉🏻 오라클은 대용량 데이터베이스에 적합한 성능과 기능을 제공하고 있으며, 질의문 구조 또한 오라클이 매우 편하고 기능이 더 많습니다. 그에 반해 MySQL은 안정성이 너무 낮기 때문에 소규모 프로젝트에 적합한 RDBMS 입니다. 즉, Oracle과 MySQL의 가장 큰 차이점은 대용량 데이터베이스에서의 가용성이라고 볼 수 있습니다. 

5. Where절과 Having절의 차이가 무엇인지 설명하시오.

👉🏻 Where절은 가장 기본적인 조건절이며 우선적으로 모든 필드를  조건에 둘 수 있는 반면에 Having은 그룹화된 테이블에 사용하는 조건절입니다.

6. 디자인 패턴 중 싱글톤 패턴이 무엇인지 설명하고 그 장점과 단점을 설명하시오.

👉🏻 싱글톤 패턴이란, 단 하나의 인스턴스를 생성해 한 번만 메모리를 할당하고(Static) 사용하는 디자인 패턴입니다. 싱글톤 패턴은 단 하나의 인스턴스를 사용하기 때문에 메모리 낭비를 방지하고, 싱글톤으로 만들어진 클래스의 인스턴스는 전역 인스턴스이기 때문에 데이터를 공유하기 쉽습니다. 따라서 객체의 로딩 시간이 현저하게 줄어 성능이 좋아지는 장점이 있습니다. 그러나 하나의 인스턴스가 너무 많은 일을 하게 되거나 많은 데이터를 공유하게 되면 수정이 어려워진다는 단점이 존재합니다.

7. 컬렉션 프레임워크에 대해 아는 만큼 설명하시오.

👉🏻 컬렉션 프레임워크란, 쉽게 말해 컨테이너를 의미합니다. 자바는 다양한 상황에서 사용할 수 있도록 여러가지의 컨테이너를 제공하는데 이것을 컬렉션 프레임워크라고 말합니다. 이러한 컬렉션 프레임워크는 자바의 인터페이스를 사용하여 구현됩니다. 컬렉션 프레임워크에서는 핵심이 되는 주요 인터페이스를 정의하고 있습니다. 첫 번째로 List 인터페이스, 두 번째는 Set 인터페이스, 마지막으로 Map 인터페이스입니다.

8. DRIVING TABLE 이란 무엇인지 설명하고 왜 중요한지 설명하시오.

👉🏻 드라이빙 테이블이란, 테이블간의 JOIN이 발생할 때, 첫 번째로 액세스 하는 테이블을 말합니다. 드라이빙 테이블의 순서에 따라서 데이터를 엑세스 하는 양의 차이가 나기 때문에 데이터 처리속도에 영향을 많이 끼치게 되므로 어떤  테이블을 먼저 드라이빙해야 하는지 중요합니다. 그래서 드라이빙 테이블을 정할 때 무조건 적은 양의 데이터가 추출할 것으로 예상되는 테이블을 먼저 드라이빙 시켜야합니다.

9. callback함수가 무엇인지 설명하고 사용 이유를 설명하시오.

👉🏻 callback 함수란, 어떤 이벤트가 발생하고 난 후 수행될 함수를 말합니다. 비동기적 처리를 통해 코드의 실행을 멈추지 않고 계속 실행하게 하고, 어떤 동작을 수행할 때 동작에 필요한 준비물이 준비된 상태에서만 동작을 수행하며 비동기 함수의 결과를 반환합니다. 즉, callback함수는 유연한 비동기적 처리를 위해 사용하는 함수입니다.

10. Deadlock 이란 무엇인지 설명하고 발생 조건을 전부 설명하시오.

👉🏻 데드락이란, 두 개 이상의 프로세스가 서로의 작업이 끝나기만을 기다리고 있어 두 작업이 영원히 끝나지 않는 상황을 말합니다. 발생 조건에는 상호 배제, 점유 대기, 비선점, 환형 대기(순환 대기) 4가지 조건이 있습니다. 데드락은 4가지의 조건이 모두 충족되면 발생되고 하나라도 만족하지 않는다면 일어나지 않습니다.

1. 상호 배제는 자원은 한 번에 한 프로세스만 사용할 수 있다는 조건입니다.

2. 점유 대기는 하나의 자원을 가지고 있으면서 다른 프로세스에 할당된 자원을 추가로 가지기 위해서는 대기하고 있는 또 다른 프로세스가 존재해야 한다는 조건입니다.

3. 비선점은 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 사용할 수 없다는 조건입니다.

4. 환형 대기(순환 대기)는 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다는 조건입니다.