For job interview, about JAVA 면접 공부하기-자바
1. Variable 변수
- primitive type 기본형 : boolean, char, byte, short, int, long, float, double
- reference type 참조형 : heap에 할당된다. 배열도 참조형 변수이다. 8개의 기본형을 제외한 나머지 타입.
type | range |
---|---|
byte | -128 ~ 127 (-2^7 ~ 2^7-1) |
short | -32,768 ~ 32,767 (-2^15 ~ 2^15-1) |
int | -2,147,483,648 ~ 2,147,483,647 (-2^31 ~ 2^31-1) |
long | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (-2^63 ~ 2^63-1) |
float | 1.4E-45 ~ 3.4028235E38 |
double | 4.9E-324 ~ 1.7976931348623157E308 |
2. OOP(Object-oriented Programming) 객체지향 프로그래밍
1. Advantages 장점
- 코드의 재사용성이 높다; 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
- 코드의 유지보수가 용이하다; 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
- 신뢰성이 높은 프로그래밍을 가능하게 한다; 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.
2. Features 특징
- Abstraction 추상화
객체간의 공통점을 찾아내서 공통의 조상을 만드는 작업. <-> 구체화 : 상속을 통해 클래스를 구현, 확장하는 작업
<b>abstract</b> class Player{ Player(){...} // 추상클래스도 생성자가 있어야 한다. <b>abstract</b> void play(int pos)<b>;</b> // 추상 메서드 ... } class CDPlayer <b>extends Player</b>{ void play(int currentPos){...} // 조상 클래스의 추상메서드를 구현한다. }
- Inheritance 상속
기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것. 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이.
class Child extends Parent{...} // child클래스에 새로운 코드가 추가되어도 Parent클래스는 영양 받지 않는다.
- Polymorphism 다형성
여러 가지 형태를 가질 수 있는 능력. 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있다.
class Tv{...} class CaptionTv extends Tv{...} Tv t = new CaptionTv(); // Tv에서 정의된 CaptionTv의 메서드, 변수 등을 Tv에서 참조 가능 CaptionTv c = new Tv(); // 컴파일 에러
- Encapsulation 캡슐화
속성과 메서드를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉한다. public 아닌 ‘private’ 사용.
3. PP(Procedural Programming) 절차지향 프로그래밍과 비교
순차적인 처리가 중요하며, 이는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어에 비해 더 빨리 처리된다.
3. Overriding 오버라이딩 vs Overloading 오버로딩
1. overriding 오버라이딩
- Definition 정의 : 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것
it occurs when a method shares the same name and function signature as another method in its super class. - Conditions 조건 : 이름이 같고, 매개변수가 같고, 리턴타입이 같아야 한다.
2. overloading 오버로딩
- Definition 정의 : 기존에 없는 새로운 메서드를 정의하는 것
it is used to describe when two methods have the same name but differ in the type or number of arguments. - Conditions 조건 : 이름이 같고, 매개변수의 개수나 타입이 달라야 한다.
- Advantages 장점 : 메서드 이름을 짓는데 고생하지 않아도 된다. 같은 이름의 메서드는 같은 기능을 할 것이라고 쉽게 예측할 수 있다. ```java class Parent{ void parentMethod(){} } class Child extends Parent{ void parentMethod(){} // overriding void parentMethod(int i){} // overloading
void childMethod(){} void childMethod(int i){} // overloading void childMethod(){} // error } ```
4. Modifier 제어자
- static : 변수에 사용되면 모든 인스턴스에 공통적으로 사용되며, 메서드에 사용되면 인스턴스를 생성하지 않고도 호출이 가능하다.
- final : 변수에 사용되면 값을 변경할 수 없는 상수가 되며, 메서드에 사용되면 오버라이딩을 살 수 없게 되고 클래스에 사용되면 자신을 확장하는 자손클래스를 정의하지 못 하게 된다.
- Access Modifier 접근 제어자
제어자 | 같은 클래스 | 같은 패키지 | 자손 클래스 | 전체 |
---|---|---|---|---|
public | o | o | o | o |
protected | o | o | o | x |
default | o | o | x | x |
private | o | x | x | x |
5. JVM (Java Virtual Machine) 자바 가상 머신
1. Definition 정의 : 자바를 실행하기 위한 가상 기계/컴퓨터
2. Features 특징
- 스택 기반의 가상 머신
- 가비지 컬렉션
- 운영체제에 독립적
- 다소 느린 속도 (APP -> JVM -> OS -> HW)
3. Process 과정
- Java Compiler : 자바 소스파일(.java)을 자바 바이트코드(.class)로 컴파일한다.
- Class Loader : 자바 바이트코드를 런타임 데이터 영역(Runtime Data Areas)에 로드한다.
- Execution Engine : 자바 바이트코드를 명령어 단위로 읽고, 해석하고(Interpreter) 실행한다.
4. 메모리
※ 참고 : 남궁성의 코드초보스터디 ( https://cafe.naver.com/javachobostudy ), 네이버 D2 (https://d2.naver.com/helloworld/1230)