1. 동기와 비동기의 차이를 설명 해 주세요.
- 동기는 요청을 함으로써 결과값이 동시에 이루어지는것을 동기라고 합니다.
- 비동기는 요청을 함과 동시에 결과값이 이루어지지 않습니다.
작업처리의 단위가 동시에 일어나느냐 아니냐의 차이라고 볼 수 있습니다.
2. 프레임워크와 라이브러리의 차이를 설명 해 주세요.
프레임워크는 하나의 큰 틀이라고 할 수 있습니다. 라이브러리는 프레임워크 안에서 코드를 짤 때
필요한 기능들이 미리 만들어져있는것이 라이브러리라고하는데 이것을 이용하여 기능을 더욱 더 간편하게 구현할 수 있습니다.
3. Call by reference란 무엇이고 보통 어떻게 쓰이나요?
참조형식이고 깊은복사라고도 한다. 실제 주소값을 통해서 접근하기때문에 수정할 시 원본 값이 바뀐다
4. Override 와 Overload 를 설명해주실 수 있을까요?
오버라이드는 부모클래스를 상속받은 자식클래스가 부모클래스의 메서드를 재정의하는것을 오버라이드라고한다.
오버로드는 한클래스안에서 같은 메서드를 재정의하는것을 의미한다.
5. JPA는 언제 필요하고 언제 필요하지 않은지 설명해주실 수 있을까요?
사용자가 개발을 할 때 복잡한 프로젝트의 경우 DB의 연관관계가 복잡하기 때문에 DB와 상호작용을 하기위해선 복잡한 코드가 필요합니다. 이럴때 JPA를 쓰게 되면 객체 관계매핑인 ORM을 통해 간단하게 처리할 수 있습니다.
그리고 JPA를 사용하지 않아야 할 때는 위의 사례와 반대로 복잡하지 않은 프로젝트일 경우 JPA를 사용하기 보단 직접 SQL 쿼리를 사용하는것이 더 효율적일 수 있습니다.
6. JPA의 더티 체킹이란 무엇인가요?
JPA의 더티체킹은 영속성 컨테이너가 관리하는 엔티티의 상태를 감지해서 변경사항이 있을 경우 트랜잭션이 끝나는 시점에 데이터베이스에 반영하는 기능이다. 한마디로 변경된 부분을 감지하는 기능이라고 볼 수 있다.
7. JVM 이란 무엇이고 왜 필요한지 설명해주실 수 있을까요?
JVM은 자바 버츄얼 머신이라고 하며 어떤 운영체제에서 독립적으로 자바를 실행할 수 있게 도와주는 머신입니다.
Java 코드가 컴파일을 하면 .class 파일이 되는데 이것이 JVM을 사용할 수 있게 자바바이트코드로 해석된 파일입니다.
그렇게 해서 .class 파일을 통해 JVM을 실행할 수 있습니다. 실행하게 되면 JVM이 운영체제에 맞게 적용하여 실행 시켜 줍니다.
프로그램 메모리를 관리하고 최적화 하는 기능도 있습니다.
8. Java가 컴파일되는 과정은 어떻게 되는지 설명해주실 수 있을까요?
1. 자바 소스코드를 작성합니다. -> 2. 자바 컴파일러가 java 파일을 .class 파일로 변환합니다. -> 3. jvm이 해석가능하게끔 .class파일로 변환이 되게 되면 JVM의 클래스 로더에게 전달합니다. -> 4. 클래스로더는 동적로딩을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역 즉 JVM의 메모리에 올립니다. -> 5. 실행엔진은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행합니다.
이때 실행엔진은 두가지방식으로 변경할 수 있습니다.
1.인터프리터 : 바이트 코드 명령어를 하나씩 읽어서 해석하고 실행
2.JIT컴파일러 : 바이트 코드 전체를 컴파일하여 바이너리 코드로 변경 후 실행
'기술면접' 카테고리의 다른 글
기술면접 준비 (2) (1) | 2024.01.19 |
---|---|
기술면접 : 자료구조+알고리즘(2/2) (0) | 2023.04.20 |
기술면접 : 운영체제(2/2) , 자료구조+알고리즘(1/2) (1) | 2023.04.14 |
기술면접 : 운영체제(1/2) (0) | 2023.04.12 |
기술면접 : 암호학/보안(1/1) (0) | 2023.04.07 |