Java 언어의 기본 문법
- Package 시스템을 사용하는 이유와 주의할점
- 프로그램 시작시 명령어를 입력해보세요
- 배포(jar)시 명령어를 입력해보세요 (manifest 파일 포함 빌드)
- Manifest 파일에 필수로 들어가야할 것은?
- 기본으로 import 되는 패키지는?
- Java는 크로스 플랫폼인가? (최소 두가지 관점에서 예/아니요 설명)
- 부호 없는 자료형 문제점
- Java에서 유일하게 부호가 없는 자료형은?
- 문자열은 몇 비트? 그 이유는?
- “A” + “B” 혹은 문자열중 일부를 바꾸게 될 경우 내부적으로 어떻게 작동할까?
- Package 시스템의 한계는? (3가지)
- 모듈 시스템의 개념과 장점(4가지)
- module-info.java에 정의되는 내용은? (2가지)
개체지향 프로그래밍(OOP)의 필요성
- 데이터를 관리하는 방법의 발전 순서는? (3단계)
데이터 -> ? -> ? - 배열 혹은 기본 자료형으로의 한계
- 구조체의 한계
- 구조체는 기본 지정자가 public 이다. 함수도 가질 수 잇다. 컴퓨터적 측면에서는 클래스와 동일하다. C언어와 호환성을 위해 남겨놓은 구조체를 쓰기보다는 기본 지정자가 private인 class를 사용하자.
- OOP는 사람은 세상을 물체의 집합이라고 인지한다고 하는데 물체(object)의 특성은? (2가지)
- 움직임이 있다. 속성이 있다.
- C에서 데이터와 함수를 묶는 꼼수는?
- struct 를 사용한다.
개체지향 프로그래밍
- OOP는 매우 주관적이다. 주관성이 강한 분야에서 토론할때 피해야할 사람의 특징 5가지는?
OOP의 4대 특성
- 4대 특성을 말하고 각각 특성에 대해서 설명하시오.
클래스와 개체
- 클래스를 설명해보세요
참조형과 포인터
- Java에서 Stack 메모리에 쌓이는?
- Heal 메모리에 만들어지는 것은?
- JAVA 는 Stack 에 개체를 생성 할 수 없다.
- C++ 은 Obj* o = new Obj(); //힙에 개체생성 // 연속적인 메모리를 직접 찾아야함
delete o; // 실행할 때 직접 삭제해야함
Obj o ; // 스택에 개체생성
// 스택이 삭제되지 않고 단지 스택 포인터만 함수가 끝나면 내려간다.
// 컴파일때 이미 개체의 크기를 알게된다.
// 스택포인터 움직임을 위한 크기 측정이 런타임에 필요없으니 더 빠름
생성자
- 선조건 후조건을 들어서 생성자를 제대로 사용하는 법을 설명하시오
- 멤버변수 는 Obj(): mA(a) { mB = b; }
접근 제어자(access modifier)
- 접근 제어자를 사용해야 하는 이유는?
- 패키지 접근 제어자가 유용한 경우 2가지는?
getter/setter 메서드
- 함수를 통한 데이터 접근의 객관적인 장점 3가지
- setter을 남발하게 될 경우 생기는 문제는?
캡슐화와 데이터 추상화
- 캡슐화를 두문장으로 정리해보세요
- 추상화를 한문장으로 정리해보세요
- 추상화의 단점 2가지는?
유연성과 재사용성
- 유연성이 좋은 코드가 최고일까? (3가지 관점에서 설명해보세요!)
정적(static) 멤버 변수 및 메서드
- static을 사용했을 때 좋은 경우는?
- java에서 개체를 생성하지 못하게 막는 방법과 다른 언어에서 제대로된 방법은?
싱글턴
- 싱글턴 패턴이란?
- 싱글턴은 하고 static이 못하는 것은?
- 싱글턴의 생성 순서를 보장하는 방법 올바른 방법은?
- 싱글턴 생성시 인자가 필요하다면? 어떻게 변형하는 방법은?
내포(nested) 클래스
- 내포 클래스의 용도는?
- 정적 내포 클래스와 비정적 내포 클래스의 차이점은?
- 다음과 같은 비정적 내포 클래스(Reader)를 생성하려면? (코드로 작성)
- 다음 코드를 읽고 문제점을 찾으시오!
상속
- OOP에서 상속이란? (한줄로 요약)
- 상속에서 부모와 자식이 있을 때 어느 개체부터 초기화를 할까요?
- 부모 생성자를 호출하는 방법은?
RTTI(run time type identification) 기능
- RTTI 기능이 무엇인가요?
- RTTI이 가능한 이유는 무엇인가요?
- instanceof연산자는 무엇이고 사용할때 주의할점은?
- RTTI 기능의 단점
Object 클래스
- Object 클래스에 대해서 설명
함수안에서 힙 생성 하면 안되는 이유
- 함수안에서 힙생성 new 한후에 return 해주는 것은 메모리 누수를 유발한다.
- Factory .create() 패턴을 이용해서 사용해주자. ( create 라는 이름이 delete 를 사용해야 한다는 의무를 상기 시켜 주기 때문이다. )
다중 상속
- Java에는 다중 상속이 존재할까요?
- 다중 상속의 위험성은?
- 다중 상속이 발생하는 이유는?
- Java에서 다중상속의 해결 방법은? (2가지)
(+a) OOP 또는 상속이 어려운 이유 (주의할점)
- 사람이 상속이 어려운 이유는?
- 상속을 이해하는 두가지 관점?
재사용성의 중요성
- 프로그래밍에서의 의의 3가지와 각각의 중의할 점은?
- 모델링 실력을 높이는 방법은?
상속 vs 컴포지션
- 둘중 선택시 4가지 기준은?
- 상속이 유리한 경우는?
- 컴포지션이 유리한 경우는?
깊은 상속의 문제는?
- has-a와 is-a의 차이는?
다형성이란? (한줄설명)
- 오버라이딩이란?
- 다형성의 장점
이른, 늦은 바인딩
- 이른 바인딩이란?
- 늦은 바인딩이란?
- Java의 기본 동작은?
- Java에서 이른 바인딩 하는 방법은?
Object class
- toString()는?
- equals()는? 주의할점은?
- hashcode()는? 사용되는 곳은?
추상 메서드/클래스
- 추상 메소드가 필요한 이유는?
- 추상 클래스가 필요한 이유는?
- 구체 클래스와의 차이점은?
인터페이스
- 인터페이스를 다른 말로는?
- 인터페이스의 접근 제어자는?
- 클래스는 다중상속이 안되고 인터페이스는 되는 이유는?
- 하지만 다중 인터페이스라도 생길 수 있는 문제는?
- 인터페이스의 핵심은?
어노테이션
- Java 어노테이션이란?
Object.clone()
- 올바른 사용 방법은?
의존성이란?
- 의존성에 대한 오해와 진실은?
결합도
- 결합도란?
- 결합도가 높다는 판단 기준은?
- 결합도를 낮추는 방법 2가지는?
구현 vs 인터페이스
- 구현 vs 인터페이스를 적절하게 사용하는 판단 기준은? (4가지)
- 디커플링의 단점은? 3가지
- 실용적인 인터페이스 사용 판단 기준은?
디자인 패턴
- 디자인 패턴 학습지 주의 사항은?
- 팩토리 메서드는? (장점은?)
- 빌더 패턴는? (장점은?)
- 플루언트 인터페이스란?
- 빌더 패턴이 잘 못 사용된 예 그리고 해결 방법은?
- 래퍼 어뎁터 패턴은? (사용 이유는?)
- 프록시 패턴은? )(장점 단점은? (3가지 경우를 이야기!))
- 프록시 패턴 문제점 그리고 해결 방안?
- 책임 연쇄?
- 옵저버, 구독 발행?
- 옵저버 패턴의 메모리 누수가 발생 위험은?
예외
- catch 블록 작성할때 주의 사항은?
- checked와 unchecked의 차이는?
- 예외의 단점은?
- 예외를 절대 XXX용으로 사용하면 안된다! XXX는?
- 오류상황을 처리 방법 4가지는?
- 상황별 예외 처리 방법은?
- 예측 + 수정 쉬운
- 예측 + 수정 어려운
- 예측 못함
SOLID 정신? (뜻과 비판)
- SRP 단일 책임
- OCP 개방 -폐쇄
- LSP 리스코프 치환
- ISP 인터페이스 분리
- DIP 의존 역전
'끄적끄적 ( 비공개 )' 카테고리의 다른 글
안드로이드 5일차 (0) | 2022.12.02 |
---|---|
day3정리 (0) | 2022.11.02 |
기술면접 질문 정리 (0) | 2022.05.12 |
취업전 해보고 싶은것 (0) | 2020.09.24 |
스프링 프로젝트를 하면서 느끼는 점들 (0) | 2020.07.01 |