9,12,13,14번 잘 모르겠음 보완 필요
1. Java의 장단점
장점: 가상머신(JVM)으로 인해 이식성이 좋다, 어떤 운영체제든 적용가능(Android), 객체지향언어라 유지보수성이 좋다. GC가 메모리관리를 해줌 ( but C, C++만 없다. 파이썬이랑 JS 다 있음)
단점: 컴파일 언어라 컴파일 과정이 시간이 걸리고, JVM때문에 무거운 언어(AWS Lambda에서 성능 저하 경험)
2. 객체지향 언어란?
프로그램 개발 방법론중에 하나이다.
기존의 절차지향에선 함수라는 것을 통해 코드를 쉽게 관리했지만, 더욱 어플리케이션이 복잡해지면서
더 높은 수준의 관리방법이 필요했고, 객체라는것을 통해 효율적으로 관리, 유지보수하게 해준다.
추상화
추상화는 클래스들의 공통적인 요소를 뽑아서 상위 클래스를 만들어내는 것.
공통적인 속성과 기능을 정의함으로써 코드의 중복을 줄이고, 클래스 간 관계를 효과적으로 설정하고, 유지/보수를 용이하게 하는 것.
자바에서는 추상 클래스와 인터페이스라는 문법 요소를 통해 추상화를 구현한다.
캡슐화
객체 내부의 속성이나 행위를 외부에서 직접접근할 수 없게 하는것, 흔히 getter/setter라 부르는 멤버함수(메소드)를 만들어 사용함으로써 내부 데이터에 제한적 접근을 할 수 있게 합니다.
- public : 접근 제한 없음
- protected : 동일한 패키지 내에 존재하거나 파생 클래스에서만 접근 가능 (상속)
- default : 아무런 접근 제한자를 명시하지 않으면 default 값이 되며, 동일한 패키지 내에서만 접근 가능
- private : 자기 자신의 클래스 내에서만 접근 가능
상속
상위클래스의 필드값과 메소드를 하위클래스가 쉽게 이용하게 하는것
안받는건 가능해도 일부만 받는건 불가능.
Overriding
기존의 클래스에 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다.
다형성
어떤 객체의 속성이나 기능이 그 맥락에 따라 다른 역할을 수행할수 있는 것을 의미
오버라이딩도 있지만 오버로딩이 대표적이라고 생각한다.
- 메서드 시그니처
- 메서드 이름
- 매개변수의 타입과 순서
- 매개변수의 개수
이 3가지중 하나라도 다르면 다른 메서드로 인식
3. JVM이란?
메모리를 자동으로 관리해주고(GC), 쉽게 다른 운영체제로 이식을 가능하게 해주는 개발환경
4. 클래스란?
객체의 설계도라고 할 수 있고, 이것을 기반으로 실제로 인스턴스화 되었을때 (메모리가 할당되었을 때) 객체라고 한다.
5. 생성자란?
클래스와 이름이 동일한 메서드, 필드 초기화를 할 때 사용함
6. 추상클래스와 일반클래스의 차이점?
추상클래스: 객체화 X
일반클래스: 객체화 O
7. 추상클래스와 인터페이스의 차이점?
추상클래스: 말그대로 클래스이기 때문에 필드값 설정, 메서드 내부 코딩이 가능하다,
인터페이스: 필드값 설정 불가, 메서드 시그니처만 지정 가능, 구현X, 다중상속이 가능하게 하기 위해 사용됨

8. 컬렉션 프레임워크란?
컬렉션이란 동일한 타입을 묶어서 관리하는 자료구조
but, 배열도 동일한 타입을 묶어서 관리하지만 컬렉션이라고 하지 않는다.
그 이유는 저장용량을 동적으로 관리할 수 없기 때문이다.
리스트, 스택, 큐, 트리등의 자료구조에 정렬, 탐색 등의 알고리즘을 구조화해 놓은 프레임워크
9. 제네릭이란?
- Data type을 특정한 type 하나로 정하지 않고 사용할 때마다 바뀔 수 있게 범용적이고 포괄적으로 지정한다 라는 의미 - 많이 열어놨을 때
- 제네릭 타입을 사용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있다. - 타입을 제한했을 때
- 또 제네릭 코드를 사용하면 요소를 찾아올 때 타입변환을 할 필요가 없어 프로그램 성능이 향상된다. - 타입을 열어놨을 때
참조형만 가능하다.
10. List, Set, Map의 차이는?
Set - 중복이 될 수 없고, 순서를 보장하지도 않음 -> Hash Table로 구현됨 Hash Table - Key가 중복될 수 없고 데이터가 랜덤으로 저장되는 특징 -> Set이랑 속성이 동일
hash table에서 key를 검색할 때 시간 복잡도가 O(1)이다 (빅오원)
-> 데이터 검색을 list에서 하는것 보다 hash table에서 하는 것이 빠름
https://www.youtube.com/watch?v=CMgpTGs_N_w
참고
List - 중복 허용 O
Set - 중복 허용 X
Map - Key는 중복 허용X, Value는 중복 허용O
11. 이진탐색트리란?
데이터 저장 알고리즘 중 하나
이진 데이터보다 크면 오른쪽, 작으면 왼쪽
데이터 체계적으로 관리 but 한쪽으로 편중되면 데이터를 읽는 속도 느려짐
12. treeset과 hashset의 차이는?
treeset - 하나의 타입만 저장 가능
hashset - 다른 타입 저장 가능
13. treemap과 hashmap의 차이는?
treemap - key는 이진탐색트리, key는 null허용X
hashmap - key null값 1번 허용
14. MVC 패턴이란?
소프트웨어 개발 프로세스이다.
M: model, (필드값) String name, int weight
V: view, GUI
C: controller, 메소드
15. 쓰레드란?
한 프로세스 내의 작업단위
하나의 프로세스는 많은 쓰레드를 가진다.
같은 프로세스 내의 쓰레드는 자원을 공유 -> 컨텍스트 스위칭 비용이 낮음
16. 프로세스란?
실행중인 프로그램의 독립적인 단위.
자원을 공유하지 않음
17. Hash Map과 Hash Table의 차이에 대해서 설명해주세요.
동기화 지원 여부와 null값 허용 여부의 차이
- Hash Table
1. 병렬 처리할 때 Thread-safe하다.
2. Null값 허용 X
- Hash Map
1. 병렬 처리 하지 않을 때 Thread-safe하지 않는다.
( 멀티 스레드 환경에서 동시에 객체의 data를 조작하는 경우 data가 깨질 수 있다. )
2. Null 값을 허용한다.
18. Stack / Heap 메모리에 대해서 설명해주세요.
내부적으로 메모리가 여러 영역으로 나뉘는데 Stack, Heap 메모리가 있다.
Stack - 함수나 메서드의 지역변수와 매개변수가 저장됨
Heap - 객체가 저장됨
19. Java의 컴파일 과정
1. .java파일을 javac 컴파일러로 바이트코드로 변환된 .class 파일을 생성
2. .class파일을 클래스로더로 전달
3. 클래스로더는 jvm의 메모리에 올린다.
4. 바이트코드를 인터프리터 혹은 jit 컴파일러 방식을 실행
'📖Computer Science' 카테고리의 다른 글
| [프로그래밍 공통] 기술면접 (0) | 2025.01.03 |
|---|---|
| [백엔드] 기술면접 (1) | 2025.01.02 |
| [네트워크] 기술면접 (1) | 2025.01.02 |
| [DB] 기술면접 (0) | 2025.01.01 |
| 기술면접 준비 (0) | 2025.01.01 |