Call by Value vs Call by Reference
더보기
Call by Value는 값을 직접 복사하여 전달. Call by Reference는 메모리 주소를 전달하여 원본 값 수정 가능.
깊은 복사 vs 얕은 복사
더보기
얕은 복사는 객체의 참조값만 복사. 깊은 복사는 객체의 실제 데이터를 새로운 메모리에 복사.
스택 vs 큐
더보기
스택은 LIFO (Last In First Out).
큐는 FIFO (First In First Out).
스택 오버플로우
더보기
스택이 초과되어 데이터가 입력될 때 발생하는 오류.
프로세스 vs 쓰레드
더보기
프로세스는 독립적인 실행 단위. 쓰레드는 프로세스 내에서 실행되는 작업 단위.
멀티 쓰레드
더보기
여러 개의 쓰레드가 병렬로 실행되는 환경.
인터페이스 vs Abstract Class
더보기
Abstract Class는 추상 메서드와 일반 메서드 포함 가능. 인터페이스는 오직 추상 메서드만 포함.
배열 vs 리스트
더보기
배열은 크기 고정, 선언 시 크기 지정 필수. 리스트는 크기 가변, 동적으로 요소 추가 가능.
암호화
더보기
데이터를 보호하기 위해 원본을 해독할 수 없는 형태로 변환하는 기법.
대칭 키 암호 vs 비대칭 키 암호
더보기
대칭 키 암호는 동일한 키로 암호화 및 복호화. 비대칭 키 암호는 공개 키로 암호화, 개인 키로 복호화.
PKI (공개 키 기반 구조)
더보기
공개 키 암호 방식을 기반으로 한 전자 서명 인증 시스템.
Hash 알고리즘
더보기
단방향 암호화 방식으로 원본 복구 불가능.
HashMap
더보기
Key-Value 형태의 데이터 저장을 위한 자료구조.
접근 제어자 (public, private, protected, default)
더보기
public: 모든 접근 가능.
protected: 같은 패키지 및 상속 관계에서 접근 가능.
default: 같은 패키지 내에서만 접근 가능.
private: 해당 클래스 내부에서만 접근 가능.
protected: 같은 패키지 및 상속 관계에서 접근 가능.
default: 같은 패키지 내에서만 접근 가능.
private: 해당 클래스 내부에서만 접근 가능.
캡슐화
더보기
객체의 데이터를 숨기고, 메서드를 통해서만 접근하도록 제한.
추상화
더보기
필요한 정보만 노출하고 불필요한 정보는 숨기는 개념.
생성자, Getter, Setter
더보기
public class Sample {
private String name;
// 생성자
public Sample(String name) {
this.name = name;
}
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String name) {
this.name = name;
}
}
private String name;
// 생성자
public Sample(String name) {
this.name = name;
}
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String name) {
this.name = name;
}
}
TCP vs UDP
더보기
TCP는 신뢰성 있는 연결 지향 프로토콜. UDP는 비연결형으로 속도는 빠르지만 신뢰성이 낮음.