[자바 이론] JAVA 이론 정리 2
by mini_min자바 이론 정리 2 (기술 면접 대비)
예외 처리
: 예외는 프로그램 실행 중에 발생할 수 있는 명령어의 정상 흐름을 방해하는 이벤트다.
자바에서 예외는 하나의 오프젝트다.
예외 처리는 에러가 발생할 경우, 에러에 해당되는 예외 오브젝트를 만들고 이것을 자바 런 타임 시스템에 전달해준다.
◻️ 장점
- 프로그램 실행 코드와 예외 처리 코드를 분류할 수 있다
- 에러 타입을 종류별로 분류할 수 있다
StackOverflowException
: 모든 스레드는 자바 힙과 관계 없는 고유 스택 공간이 있는데, 이를 초과할 때 발생할 수 있는 예외이다.
제너릭과 컬렉션 Collection
◻️ 제너릭 이란?
제너릭은 틀이 되는 하나의 메소드나 멤버 변수를 정의해두고 호출하는 쪽에서 요구하는 자료형의 값을 갖도록 하는 것이다. 각 데이터 형에 대한 메소드나 멤버 변수를 구현할 필요 없이 서로 다른 자료형의 결과를 얻을 수 있도록 하는 기능
◻️ 장점
- 타입 에러를 사전에 방지
- 불필요한 타입 변환으로 인한 프로그램의 안전성을 향상 시킬 수 있음
컬렉션 종류
◻️ set
: 순서 없음, 중복 허용 안됨
HashSet
◻️ List
: 순서 있음, 중복 가능, 가변적인 길이를 가진 배열과 같은 구조
Vector(동기화가능), ArrayList(동기화x), LinkedList, Stack
ArrayList 는 내부적으로 배열 구조를 가지며, 각 데이터가 인덱스를 가지고 있어 데이터의 검색에 유리하다.
LinkedList 는 데이터를 저장하는 각 노드가 이전 노드와 다음 노드 상태를 저장하는 방식으로 구현된다.
Stack 은 LIFO 구조다.
◻️ Map
: key 와 value 값 형식으로 저장되며, key 가 set 이라 중복 불가다.
중복 키가 들어가면 이전 데이터를 덮는다.
Entry 는 키와 값의 한쌍이다.
Hashtable (동기화 가능), HashMap(동기화 불가)
배열과 ArrayList 차이
배열은, 요소의 크기 변경이 불가하다. 데이터 삽입시 기존 데이터를 덮는다.
ArrayList는 가변길이 자료구조다. 추가, 삭제 기능을 제공한다.
Stack 과 Queue
스택은 LIFO 구조다. 모든 작업이 리스트의 한쪽 끝에서만 수행되는 선형 리스트의 한 형태다.
큐는 FIFO 구조이다.
스레드 (Thread)
: 스레드는 CPU 시간을 할당받아 수행되는 실행 단위이다.
하나의 애플리케이션이 실행되려면 최소 하나의 스레드가 필요하다.
프로세스에 할당된 메모리 영역에서 실행되고, 프로세스에 할당된 시스템 리소스를 공유한다.
동기화
여러 스레드가 동시에 실행되다보면, 2개 이상의 스레드가 동일한 데이터에 접근해서 문제가 발생할 수 있다. 이러한 문제를 해결하기 위한 방안이 동기화이다.
동기화는 작업들의 수행 시기를 맞추는 것이다.
-> 락을 가진 스레드부터 차례대로 자원을 쓰고 다음 스레드에게 락 + 자원을 반납하는 식...
JDBC (자바 데이터 베이스 커넥션)
◻️ Statement 객체
정적인 SQL 문을 실행하여 결과를 돌려주는 객체다.
스스로 SQL 을 해석하지 못하고 전달하는 역할만 한다.
◻️ PreparedStatement 객체
프리 컴파일(전처리) 된 SQL 문을 나타내는 객체다.
텍스트 SQL 을 호출하고
가독성이 좋고 코드 안전성이 높다.
◻️ CallalbeStatement 객체
프로시저를 호출할 때 사용한다.
Connection Pool (DBCP)
DBCP 는 데이터베이스와 연결된 커넥션을 미리 만들어 POOL 에 저장하고 필요할 때 커넥션을 가져다 쓰고 반환하는 기법이다. 매번 커넥션을 연결하고 종료한느 비효율적인 작업을 하지 않아도 된다.
직렬화
직렬화는 클래스 객체의 멤버 변수 현재 상태를 그대로 보존하다가 파일에 저장하거나 네트워크를 통해 전달하는 기능이다.
멤버 변수의 값을 보존하거나, 다른 네트워크에 있는 호스트에 값을 보낼 경우 사용한다.
* 직렬화를 위해서는 먼저 객체를 직렬화가 가능하도록 java.io.Serializable 인터페이스를 구현한다.
모듈
여러 패키지, 이미지 등 자원을 하나로 모은 컨테이너이다.
패키지
서로 관련된 클래스나 인터페이스의 컴파일된 클래스 파일들을 하나의 디렉터리에 묶어 놓은 것이다.
'개발 공부중 > 📑 기술 면접' 카테고리의 다른 글
[프레임워크] 프레임워크 이론 정리 (0) | 2023.02.08 |
---|---|
[웹 프로그래밍 이론] 웹 서버 이론 정리 (1) | 2023.02.06 |
[자바 이론] JAVA 이론 정리 (0) | 2023.01.20 |
[AJAX] AJAX 이해하기! (0) | 2023.01.19 |
[JSON] JSON 개념 정리 (0) | 2023.01.19 |
블로그의 정보
개발자 미니민의 개발로그
mini_min