본문 바로가기

Developer/기술면접

면접질문 정리 ( Java & Database )

💡 Java의 특징을 설명해주세요.

  • Java는 객체지향 프로그래밍 언어입니다.
  • 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체 지향 개념의 특징인 (OOP)캡슐화, 상속, 다형성이 잘 적용된 언어입니다.
  • 장점
    • JVM(자바가상머신) 위에서 동작하기 때문에 운영체제에 독립적이다.
    • GabageCollector를 통한 자동적인 메모리 관리가 가능하다.
  • 단점
    • JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리다.
    • 다중 상속이나 타입에 엄격하며, 제약이 많다

💡 Java의 컴파일 과정에 대해 설명해주세요.

  1. 개발자가 .java 파일을 생성한다.
  2. build를 한다.
  3. java compiler의 javac의 명령어를 통해 바이트코드(.class)를 생성한다.
  4. Class Loader를 통해 JVM 메모리 내로 로드한다.
  5. 실행엔진을 통해 컴퓨터가 읽을 수 있는 기계어로 해석된다.(각 운영체제에 맞는 기계어)

💡 Java에서 제공하는 원시 타입들에 무엇이 있고, 각각 몇 바이트를 차지하나요?

  • 정수형 byte, short, int, long 실수형 float, double 문자형 char 논리형 boolean이 있고,
  • 정수형 1, 2, 4, 8, 실수형 4, 8, 문자형 2, 논리형 1 바이트를 차지합니다.

 

💡 오버라이딩(Overriding)과 오버로딩(Overloading)에 대해 설명해주세요.

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

💡 객체지향 프로그래밍(OOP)에 대해 설명해주세요.

모든 데이터를 객체취급하며, 처리요청을 받은 객체는 객체 그 안의 기능을 사용해 요청을 처리합니다.

특징으로는 캡슐화, 상속, 다형성, 추상화 등이 있고, 모듈 재사용으로 확장 및 유지보수가 용이합니다.

💡 가비지 컬렉션(Garbage Collection)에 대해 설명해주세요.

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

💡 자바의 메모리 영역에 대해 설명해주세요.

  • 자바의 메모리 공간은 크게 Method 영역, Stack 영역, Heap 영역으로 구분되고, 데이터 타입에 따라 할당됩니다.
  • 메소드(Method) 영역 : 전역변수와 static변수를 저장하며, Method영역은 프로그램의 시작부터 종료까지 메모리에 남아있다.
  • 스택(Stack) 영역 : 지역변수와 매개변수 데이터 값이 저장되는 공간이며, 메소드가 호출될 때 메모리에 할당되고 종료되면 메모리가 해제된다. LIFO(Last In First Out) 구조를 갖고 변수에 새로운 데이터가 할당되면 이전 데이터는 지워진다.
  • 힙(Heap) 영역 : new 키워드로 생성되는 객체(인스턴스), 배열 등이 Heap 영역에 저장되며, 가비지 컬렉션에 의해 메모리가 관리되어 진다.

💡 접근 제한자(Access Modifier)에 대해 설명해주세요.

  • 변수 또는 메소드의 접근 범위를 설정해주기 위해서 사용하는 Java의 예약어를 의미하며, 총 4 가지 종류가 있습니다.
  • public - 접근 제한이 없다. (같은 프로젝트 내 어디서든 사용 가능)
  • protected - 해당 패키지 내, 다른 패키지에서 상속받아 자손 클래스에서 접근 가능하다.
  • (default) - 해당 패키지 내에서만 접근 가능
  • private - 해당 클래스에서만 접근 가능

 

💡 Error와 Exception의 차이를 설명해주세요.

  • Error는 실행 중 일어날 수 있는 치명적 오류를 말합니다. 컴파일 시점에 체크할 수 없고, 오류가 발생하면 프로그램은 비정상 종료되며 예측 불가능한 UncheckedException에 속합니다.
  • 반면, Exception은 Error보다 비교적 경미한 오류이며, try-catch를 이용해 프로그램의 비정상 종료를 막을 수 있습니다.

💡 컬렉션 프레임워크에 대해 설명해주세요.

  • 다수의 데이터를 쉽고 효과적으로 관리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미합니다.
  • 자바 컬렉션에는 List, Set, Map 인터페이스를 기준으로 여러 구현체가 존재하고, 이에 더해 Stack, Queue 인터페이스도 존재합니다.

 


💡 SELECT 쿼리의 수행 순서를 알려주세요.

FROM, ON, JOIN > WHERE, GROUP BY, HAVING > SELECT > ORDER BY > DISTINCT > LIMIT

1. FROM

- 각 테이블을 확인한다.

2. ON

- JOIN 조건을 확인한다.

3. JOIN

- JOIN이 실행되어 데이터가 SET으로 모아지게 된다. 서브쿼리도 함께 포함되어 임시 테이블을 만들 수 있게 도와준다.

2. WHERE

- 데이터셋을 형성하게 되면 WHERE의 조건이 개별 행에 적용된다. WHERE절의 제약 조건은 FROM절로 가져온 테이블에 적용될 수 있다.

3. GROUP BY

- WHERE의 조건 적용 후 나머지 행은 GROUP BY절에 지정된 열의 공통 값을 기준으로 그룹화된다. 쿼리에 집계 기능이 있는 경우에만 이 기능을 사용해야 한다.

4. HAVING

- GROUP BY절이 쿼리에 있을 경우 HAVING 절의 제약조건이 그룹화된 행에 적용된다.

5. SELECT

- SELECT에 표현된 식이 마지막으로 적용된다.

6. DISTINCT

- 표현된 행에서 중복된 행은 삭제

7.ORDER BY

- 지정된 데이터를 기준으로 오름차순, 내림차순 지정

8. LIMIT

- LIMIT에서 벗어나는 행들은 제외되어 출력된다.

💡 RDBMS와 NoSQL의 차이에 대해 설명해주세요.

 

 

RDBMS모든 데이터를 2차원 테이블 형태로 표현합니다.

  • 장점 : 스키마에 맞춰 데이터를 관리하기 때문에 데이터의 정합성을 보장할 수 있다.
  • 단점 : 시스템이 커질 수록 쿼리가 복잡해지고 성능이 저하되며 Scale-out이 어렵다(Scale-up만 가능)

NoSQL(Not Only SQL)은 RDBMS와 반대로 데이터간의 관계를 정의하지 않고, 스키마가 없어 좀 더 자유롭게 데이터를 관리할 수 있으며, 컬렉션이라는 형태로 데이터를 관리합니다.

  • 장점 : 스키마 없이 Key-Value 형태로 데이터를 관리해 자유롭게 데이터를 관리할 수 있다.
  • 데이터 분산이 용이하여 성능 향상을 위한 scale-up 뿐만아닌 scale-out 또한 가능하다.
  • 단점 : 데이터 중복이 발생할 수 있고, 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에서 수행해야 한다.
  • 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않아 데이터 구조 결정이 어려울 수 있다. 

💡 inner join과 outer join의 차이를 설명해주세요.

 

 

💡 ORM에 대해 설명해주세요.

ORM은 객체와 관계형 데이터베이스 매핑의 줄임말이며, OOP에서 쓰는 객체라는 개념을 구현한 클래스와 RDB에서 쓰이는 데이터 테이블을 매핑하는 것을 의미합니다.

💡 JOIN에서 ON과 WHERE의 차이를 설명해주세요.

ON WHERE 보다 먼저 실행되어 JOIN 을 하기 전에 필터링을 하고 (=ON 조건으로 필터링이 된 레코들간 JOIN이 이뤄진다)

WHERE은 JOIN 을 한 후에 필터링을 합니다. (=JOIN을 한 결과에서 WHERE 조건절로 필터링이 이뤄진다)

 

출처: https://dev-coco.tistory.com/158 [슬기로운 개발생활:티스토리]

출처 : https://dev-coco.tistory.com/153?category=1056309#%F-%-F%--%A-%--%EC%BB%AC%EB%A-%--%EC%--%--%--%ED%--%--%EB%A-%--%EC%-E%--%EC%-B%-C%ED%--%AC%EC%--%--%--%EB%-C%--%ED%--%B-%--%EC%--%A-%EB%AA%--%ED%--%B-%EC%A-%BC%EC%--%B-%EC%-A%---

'Developer > 기술면접' 카테고리의 다른 글

기술면접 질문 - Spring  (0) 2022.07.13
SSR과 CSR의 차이  (0) 2021.08.21
Webpack이란?  (0) 2021.07.20
Promise란?  (0) 2021.07.20
async , await란?  (0) 2021.07.20