백엔드 개발 기술면접 정리 (Java 추가중)

희소·2021년 10월 10일
11

기술면접 정리

목록 보기
1/5
post-thumbnail

안녕🥳 난 그냥 그래

기술면접 질문 List - 자바

1. OOP(Object-Oriented Programming, 객체 지향 프로그래밍) 이란?

: OOP는 현실 세계를 프로그래밍으로 옮겨와 현실 세계의 사물들을 객체로 보고, 그 객체로부터 개발하고자 하는 특징과 기능을 뽑아와 프로그래밍하는 기법입니다.

2. OOP의 장단점은?

: 장점
코드에 대한 재사용이 용이하다. 유지보수에 용이하다.
객체 단위로 코드가 나눠져 작성되기 때문에 디버깅이 쉽다.
클래스단위로 모듈화 시켜서 개발할 수 있으므로, 업부 분담 용이하다.
단점
처리속도가 상대적으로 느리다.
객체가 많으면 용량이 커질 수 있다.
설계 시 많은 시간과 노력이 필요하다.
객체가 상태를 갖기에, 변수가 존재하고 변수를 통해 객체가 예측할 수 없는 상태를 갖게되면, Application 내부에서 버그를 발생시킵니다.

3. OOP 특징은?

1) 추상화
: 공통의 속성이나 기능을 묶어 이름을 붙이는 것. 객체 지향적 관점에서 클래스를 정의하는 것
2) 캡슐화
: 정보 은닉 - 필요가 없는 정보는 외부에서 접근하지 못하도록 제한하는 것 [키워드: private]
: 필요한 정보와 행동을 묶음과 동시에 보여줘야 할 것과 숨겨야 할 것으로 구분지음.
3) 상속
: 상위 개념의 특징을 하위 개념이 물려 받음.
4) 다형성 (유연성, 재활용성, 유지보수)
: 하나의 객체가 여러 형태를 띈다라는 의미. 상속받은 자식클래스들이 기능이 각기 다르다.

4. 오버라이딩, 오버로딩 ?

: 컴파일타입 다형성 : 오버로딩
같은 이름의 메소드를 매개변수의 개수 또는 타입을 변경해 여러개 사용.기존에 없던 새로운 메서드를 정의하는 것이고,
메소드 이름 절약,같은기능 메소드 하나이름

런타입타입 다형성 : 오버라이딩
상속받은 부모 클래스 메소드를 재정의해 사용. 상속받은 메서드를 덮어쓴다.
상황에 맞게 메소드를 변경해야하는 경우 오버라이딩.

5. 자바의 특징은?

1) 운영체제에 독립적
: JVM (자바가상머신 - 시스템 메모리를 관리하면서 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경 제공)에 동작하기 때문에, 특정 운영체제에 종속 되지 않음
2) 객체 지향 언어
: 클래스와 객체를 사용하여 프로그램을 간결하게 구현 가능
: 프로그래밍 하기 위해 여러 언어적 지원을 하고 있음
: 캡슐화, 상속, 추상화, 다형성이 특징
3) 자동 메모리 관리 (Garbage Collection)
4) 네트워크와 분산환경 지원
5) 멀티쓰래드(동시사용가능) 지원
6) 동적 로딩(그때 그때 사용 가능) 지원
7) 오픈소스임
: OpenJDK가 오픈소스임

6. 클래스 VS 객체 VS 인스턴스

: Class [클래스] - 객체를 정의해 놓은 것, 객체를 생성하기 위해 사용됨
: Object [객체] - 실제로 존재하는 것, 사물 또는 개념
: Instance [인스턴스] - 객체랑 비슷, 객체는 인스턴스를 포함하고 있음
인스턴스화 - 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화 라고 함 ex) Car a = new Car();
클래스로부터 만들어진 객체를 그 클래스의 인스턴스(객체) 라고 함

7.JDBC란?

: Java Data Base Connection의 약자
: JAVA언어를 통해 데이터 베이스에 접근 할 수 있는 프로그래밍을 의미

8. ARRAY VS LIST

Array
선언시 배열 크기 지정이 필요하다. 예) String list = new String[7]
객체를 넣을 때 인덱스 번호를 정의해야 한다. 예) list.add('book')
다차원 저장이 가능하다 (Multidimensional).
선언시 메모리가 할당된다
기본 데이터 타입(Primitive Type), 오브젝트 할당 가능하다
접근이 빠르다 (인덱스 번호를 이용해 Random access를 하기 때문)
List
사이즈 지정을 하지 않아도 동적으로 변화한다.
그냥 넣어도 된다.
다차원 저장이 불가능하다.
오브젝트만 할당 가능하다
(* 기본 데이터 타입도 할당 가능한 것처럼 보이지만 실제로는 JVM에 의해 오브젝트와 되어 할당되는 것이다. 따라서 기본 데이터 타입만 들어가는 자료구조가 요구될 때에는 Array가 Arraylist보다 더 효율적이다.)
추가, 삭제가 빠르다 (포인터로 Sequential access를 하기 때문)

9. MAP VS Set VS LIST

:List는 순서가 있는 데이터의 집합으로, 중복을 허용한다.
Set은 순서가 없는 데이터의 집합으로, 중복을 허용하지 않는다.
Map은 key와 value한 쌍으로 이루어지는 데이터의 집합으로 순서가 없다. 이 때 키는 중복을 허용하지 않는다.

List와 Set은 Collection 인터페이스를 상속받고 Map은 구조상의 차이로 인해 별도로 정의한다.

10. 33. Queue와 Stack의 차이는?

Queue는 선형자료구조의 일종으로 FIFO(First In, First Out)구조를 가지고 있고, Stack은 LIFO(Last In, First Out)구조를 가지고 있다

profile
안녕하세융 🧸

1개의 댓글

comment-user-thumbnail
2022년 12월 26일

잘 보구 갑니당

답글 달기