작성완료 / 작성중
1. JAVA 특징
- 객체 지향 프로그래밍 언어
- JVM에서 실행되기 때문에, 플랫폼에 의존하지 않고 실행이 가능함
- 멀티 스레딩 지원
2. JVM
- 자바 바이트 코드를 실행하는 자바 가상 머신
- CPU나 운영체제의 종류와 무관하게 동작할 수 있게 한다.
- 자동으로 메모리 관리를 해줌
- Class Loader, GC, Runtime Data Area, Execute Engine 으로 나뉨
3. 자바의 멀티 스레딩
- Main Thread가 main 메소드를 실행하면서 시작
- Main Thread가 종료되더라도 실행 중인 스레드가 하나라도 있다면 프로세스는 종료되지 않는다.
4. 자바에서 Thread 생성 방법
1) new를 통해 thread 클래스 객체 생성 후 start 메서드를 통해 실행. Runnable 인터페이스를 구현한 클래스를 매개변수로 사용
2) thread 하위 클래스로 부터 생성
5. 객체지향 언어 특징
- 상속: 부모클래스의 속성과 기능을 자식 클래스가 이어 받아 사용
- 캡슐화: 변수와 메소드를 클래스에 저장하여 사용, 정보 은닉 가능
- 다형성: 변수명, 함수명이 상황에 따라 다른 의미로 해석 가능, 오버라이딩/오버로딩 가능
- 추상: 인터페이스를 이용하여 필요한 정보만 표현하여 공통 속성, 기능을 묶어 이름을 붙임
6. 객체지향 언어와 절차지향 언어 차이점
1) 캡슐화, 다형성 상속을 지원하는가?
2) 데이터 접근 권한을 걸 수 있는가?
- 객체 지향 : 속성과 기능으로 나누어 실행, 코드 재활용성 높음, 설계 시간이 오래걸림- 절차 지향: 순차적으로 실행, 상대적으로 속도 빠름, 코드의 순서가 바뀌면 결과가 달라짐
-> 명령형 프로그래밍
* 함수형 언어?
- 순수 함수를 지향하는 프로그래밍 언어 (순수 함수: 같은 입력, 같은 출력)
- 불변성 지향, 변경 가능한 상태를 최대한 제거
-> 선언형 프로그래밍
7. 인터프리터와 컴파일러 차이점
컴파일
- 런타임 이전에 프로그래밍 언어를 기계어로 해석하는 작업 방식
- Assembly 언어로 변환하기 때문에 구동 시간이 오래 걸리지만 작동은 빠름
- OS 및 빌드 환경에 종속적
인터프리트
- 런타임 이후에 row단위로 해석하는 작업 방식
- 런타임 즉시 해석하기 때문에 실행시간은 느림
- OS 및 플랫폼에 종속되지 않음
8. 익명 함수란?
함수의 이름이 없는 함수
* 함수형 인터페이스: 메소드 하나만 가지고 있는 인터페이스 @FunctionalInterface
6. Stream API
- 컬렉션, 배열 등의 저장 요소를 하나씩 참조하며 함수형 인터페이스를 적용하여 반복적으로 처리할 수 있도록 해주는 기능
- 객체 집합.스트림 생성().중개연산().최종연산()
- 재사용 불가능
7. Collection 종류
목록성 데이터를 처리하는 자료구조
- List: 순서o
- Map: key-value 구조, 중복x, 순서x
- Set: key-value 구조에서 key가 value 값, 중복x, 순서x
- Stack/Queue: 순서o
* array와 차이: 정적 메모리 할당이 아닌 동적 메모리 할당
* ArrayList와 Vector 차이: ArrayList는 Thread safe하지 않고, Vector는 Thread safe하다.
* Map, HashMap 차이: key 값을 찾는 과정에서 HashMap은 hash table을 이용, Map은 red-black tree 알고리즘을 이용
8. Spring 과 Spring Boot 차이
9. XML Beans와 Autowired 특징
EJB
각 클래스 간의 의존도가 생기기 때문에 유지보수에 불편한 점이 생겨 생긴 것이 Annotation
10. 어노테이션 종류
- Built-in, Meta, Custom
* AOP(관심지향 프로그래밍)
11. Reflection
Class, Constructor, Method, Field의 정보를 가져오고 변경할 수 있도록하는 JAVA API
12. JPA
13. Garbage Collection
14. 클래스/객체/인스턴스
15. 예외 처리 방법과 각 차이점
- try/catch: 복구형
- throw: 회피형
- catch: 전환형
16. Checked Exception vs Unchecked Exception
17. 자바 실행 과정
18. 자바에서 동기화하는 법
19. method reference
20. default method
인터페이스 내부에서도 default를 사용해 선언한 메소드
기존에 존재하던 인터페이스를 이용하여 클래스를 만들고 있는데, 인터페이스를 보완하는 과정에서 추가할 때 사용
21. optional class
22. upcasting vs downcasting
- upcasting: 자식클래스가 부모클래스로 캐스팅, 부모 클래스 속성/기능에만 접근 가능, 다형성을 위해 사용
- downcasting: 부모 클래스가 자식클래스로 캐스팅, 명시적으로 타입을 지정해주어야 함
* casting: 형변환
* 객체 타입을 구분하기 위해 instanceof 연산자 사용
23. 기본형 vs 참조형
기본 타입
- byte, short, char, int, float, double, boolean
- 크기가 작고 고정적, stack에 저장
참조 타입
- class, array, interface, enumeration
- new를 통해 생성
- 데이터 크기가 가변적, heap에 저장
- 더 이상 참조하는 변수가 없을 때 가비지 컬렉션에 의해 파괴
24. int vs short
25. StringBuilder vs StringBuffer
26. VO, DTO, POJO
- VO: 내부 속성 값을 변경할 수 없는 Read-Only 특성을 가진 객체, 변경없이 값으로 취급할 객체
- DTO: 계층 간 데이터 교환을 위해 사용하는 객체 (private 변수, setter, getter로 구성)
- POJO: 순수하게 getter, setter 메소드로 이루어진 Value Object 성의 Bean (상속, 인터페이스, 어노테이션 x)
- DAO: DB에 엑세스 하는 객체
* POJO 사용 이유? - 가장 일반적인 형태로 코드를 작성함으로써 코드에 대한 테스트 작업을 좀 더 유연하게 할 수 있음
27. Java Beans, EJB Beans
28. Persistance Framework
- SQL Mapper
ex) MyBatis, JDBC
- ORM
ex) JPA, Hibernate
29. IoC Container
30. swagger
31. Rest API
32. Maven vs Gradle
Maven - pom.xml 을 이용하여 관리
gradle - maven과 달리 변수, 조건문으로 로직 구현이 가능, 속도 향상
참고
https://gem1n1.tistory.com/27
https://honbabzone.com/java/java-thread/
Ready-For-Tech-Interview/[Java] 객체지향 프로그래밍 개념.md at master · WooVictory/Ready-For-Tech-Interview · GitHub
https://st-lab.tistory.com/151
Tech_interview/README.md at main · SSAFY-CS-STUDY/Tech_interview · GitHub
https://jins-dev.tistory.com/entry/Compiler-%EC%99%80-Interpreter-%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90
https://jeong-pro.tistory.com/165
https://www.crocus.co.kr/1553
GitHub - WooVictory/Ready-For-Tech-Interview: 💻 신입 개발자로서 준비를 하기 위해 지식을 정리하는 공간 👨💻
https://m.blog.naver.com/weekamp/186678831
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ksw6169&logNo=221621730236
https://jethro.tistory.com/entry/%ED%8E%8C-map%EA%B3%BC-hashmap%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
https://codechacha.com/ko/reflection/
https://madplay.github.io/post/java-upcasting-and-downcasting
https://hyojun123.github.io/2019/04/18/gradleAndMaven/
https://siyoon210.tistory.com/95
'CS' 카테고리의 다른 글
[CS] 동기/비동기, 블록/논블록 (1) | 2022.10.26 |
---|---|
신입 개발자 면접 스터디 - DB (0) | 2021.06.10 |
신입 개발자 면접 스터디 - OS (0) | 2021.06.07 |