- 자바의 동작 과정
- 자바 코드를 작성한다 -> .java 파일
- Java Compiler(javac)가 .java파일을 .class파일로 컴파일 한다.
- .class 파일들이 JVM에 들어가 Class Loader가 클래스들을 JVM에 올린다.
- JVM에 있는 class 파일들이 Interpreter와 JIT Compiler에 의해 해석된다.
- 해석된 바이트 코드들을 Runtime Data Area로 옮겨져 실질적인 실행이 된다.
- JIT Complier
= java JVM에 있는 컴파일러로 자주 사용되는 메서드나 클래스를 캐시에 저장시켰다가 필요할 때 컴파일 해서 준다.
- warm-up
= 성능 확인 또는 향상을 위해 JIT 컴파일러의 캐시에 원하는 데이터가 캐싱되도록 유도하는 것을 말함
- 쓰레드? 프로세스?
쓰레드란? = 쓰레드란 프로세스 내에서의 작업의 흐름 단위를 뜻한다.
프로세스란? = 프로세스란 동작중인 프로그램을 뜻하는 동적인 개념이다.
- Collection이란?
- Collection을 사용하는 이유?
= 크기가 유동적이지 않은 배열의 단점을 보완하기 위
- List
- arraylist, linkedlist, vector, stack
- Set
- TreeSet, HashSet, LinkedSet
- Map
- hashmap, treemap
- System.out.println ****메소드는 현업에서 절대 쓰지 말라고하는 메소드인데 그 이유가 무엇일까요?
= 로그 기능 불가능 , 휘발성, synchronized로 선언되어 있기 때문에 오버헤드 발생 ( 성능 저하)
- int vs Integer 차이
int = 기본자료형, 산술 연산 가능, null 불가
Integer = 참조자료형, 산술 연산 불가능 , null가능
- 기본 자료형을 객체로 다루어야 할 때 Wrapper 클래스로써의 역할
- **interface vs abstract class**
1. 목적의 차이 interface : 설계의 목적 / abstract : 확장의 목적
2. 다중 상속 가능 불가능
- 동기화란?
동기화란 프로세스 또는 스레드들이 수행되는 시점을 조절하여 서로가 알고 있는 정보가 일치하는 것
- synchronized 동작 원리
lock을 걸어 다른 스레드가 접근하지 못하게 함
- **싱글 스레드로 접근한다는 가정하에선 StringBuilder 와 StringBuffer 의 성능이 똑같을까요?**
= 싱글 스레드 환경에서는 StringBuilder와 StringBuffer의 성능은 유사합니다. 두 클래스 모두 문자열을 조작하는 데 사용되며, StringBuilder는 스레드 안전하지 않고, StringBuffer는 스레드 안전합니다. 따라서 단일 스레드에서는 StringBuilder가 약간 더 빠를 수 있습니다.
- Junit이 무엇일까?
= JUnit은 자바 언어를 위한 단위 테스트 프레임워크입니다. 소프트웨어의 각 구성 요소(클래스 또는 메서드)를 테스트하는 데 사용되며, 테스트 케이스를 작성하고 실행하는 데 도움을 줍니다.
- 단위 테스트란 무엇인가
= 단위 테스트는 소프트웨어 개발에서 작은 부분(단위)을 개별적으로 테스트하는 과정입니다. 주로 클래스 또는 메서드 수준에서 코드의 동작을 확인하고 예상된 결과와 실제 결과를 비교하여 코드의 정확성을 검증하는 것을 의미합니다.
- private static
= private static 멤버는 클래스 내에서만 접근 가능하며, 인스턴스 생성과 관계없이 클래스 수준에서 사용됩니다. 예를 들어, private static 메서드는 클래스의 인스턴스를 만들지 않고도 호출할 수 있습니다.
- 람다식, 함수형 인터페이스
- BiFunction
= 람다식은 익명 함수를 작성하는 방법으로, 주로 함수형 인터페이스의 인스턴스를 생성하기 위해 사용됩니다. 함수형 인터페이스는 하나의 추상 메서드를 가진 인터페이스를 의미하며, 람다식은 이 추상 메서드의 구현을 제공합니다. BiFunction은 두 개의 입력 매개변수를 받아들이고 결과를 생성하는 함수형 인터페이스입니다.
- IllegalArgumentException
= IllegalArgumentException은 메서드에 전달된 인수가 유효하지 않은 경우 발생하는 예외입니다. 일반적으로 메서드의 매개변수 유효성을 검사할 때 사용됩니다.
- http가 뭘까? https가 뭘까?
= HTTP(하이퍼텍스트 전송 프로토콜)는 웹에서 정보를 전송하는 데 사용되는 프로토콜로, 보안 기능이 부족합니다. HTTPS(하이퍼텍스트 전송 프로토콜 보안)는 HTTP의 보안 버전으로 데이터를 암호화하여 보호합니다.
- 포트
= 포트는 컴퓨터에서 특정 프로세스와 통신하기 위한 엔드포인트를 식별하는 데 사용되는 숫자입니다. 네트워크 패킷이 특정 포트로 전송되면 해당 포트에서 실행 중인 서비스로 전달됩니다.
- context switching
= Context Switching은 스레드 간 혹은 프로세스간 전환 시 현재 스레드의 상태를 저장하고 다음 스레드의 상태를 복원하는 작업을 말합니다. 이 작업은 스케줄러에 의해 수행되며 스레드 간 공유 자원에 대한 경합을 조정합니다.
- **mutex**
= synchronized와 같이 Mutex는 상호 배제 락(Mutual Exclusion Lock)의 약어로, 공유 자원에 대한 동시 접근을 막기 위해 사용되는 동기화 메커니즘입니다.
- **spin lock**
= Spin Lock은 락을 얻을 때까지 계속 반복적으로 시도하는 락 메커니즘입니다. 다른 스레드가 락을 해제할 때까지 스레드가 무한히 대기합니다.
- ThreadLocal
= ThreadLocal은 스레드별로 독립적인 데이터를 저장하고 관리하는데 사용되는 클래스입니다. 각 스레드는 ThreadLocal 변수를 사용하여 자신만의 데이터를 유지하고 접근할 수 있습니다.
'백엔드 멘토링' 카테고리의 다른 글
@OneToMany, @ElementCollection (1) | 2023.12.01 |
---|---|
단축 url 서비스 Base62으로 리팩터링하기 - 회고록 (1) | 2023.10.08 |
Transaction이란? (0) | 2023.09.23 |
2023-08-29 DB 관련 질문 정리 (0) | 2023.08.30 |
객체지향의 사실과 오해 후기 (0) | 2023.08.27 |