* 취준생 시절 면접 때 직접 들었던 질문 위주로 정리했고, 예상 질문으로 제가 준비했던 것들도 있습니다.
- 인성 면접 : https://young0105.tistory.com/347
- 기술 면접 1 : https://young0105.tistory.com/348
- 기술 면접 2 : https://young0105.tistory.com/349
- 기술 면접 4 : https://young0105.tistory.com/351
● 메서드 오버라이딩 vs 메서드 오버로딩
- 메서드 오버라이딩 : 부모 클래스의 메서드를 자식 클래스가 재정의해서 사용하는 것
- 메서드 오버로딩 : 같은 이름의 메서드가 서로 다른 매개변수를 갖도록 여러 번 선언해서 사용하는 것
● 다형성
- 하나의 타입에 여러 객체를 대입할 수 있게 해서 다양한 형태로 동작하게 하는 것
- 자료형을 다양한 형태로 바라봄으로써, 같은 코드에서 다양한 실행 결과가 나타날 수 있게 함
- https://young0105.tistory.com/43
● 다형성 활용 경험
● 객체 지향 프로그래밍
- 객체와 객체 간의 관계를 형성하거나 상호작용시킴으로써 프로그램을 구현하는 방법론
● SOLID 원칙
- https://young0105.tistory.com/274
// 특정 원칙의 예시를 들어 보라는 경우도 있었음
● 캡슐화
- 객체의 데이터를 외부에서 직접 접근할 수 없도록 숨기고, 함수를 통해서만 접근 가능하게 함
● 추상화
- 클래스를 정의할 때, 불필요한 부분을 생략하고 객체의 속성 중 중요한 것들에만 중점을 두어 개략화함
● 변수
- 값을 저장할 수 있는 메모리 공간
● 자료형
- https://young0105.tistory.com/7
// 각 자료형이 몇 byte인지 묻는 경우도 있었음
● final 변수 vs static 변수
- final : 변하지 않는 값을 저장하는 '상수'를 선언할 때 사용하는 키워드
- static : 해당 클래스를 기반으로 만들어진 여러 객체들이 공유하는 하나의 변수가 필요할 때 사용하는 키워드
(https://young0105.tistory.com/40)
● 클래스 vs 객체
- 클래스 : 객체를 정의하는 설계도
- 객체 : 클래스를 기반으로 실제 메모리에 생성된 구체적인 대상
- https://young0105.tistory.com/13
● 상속
- 부모 클래스의 멤버변수/메서드를 자식 클래스가 물려 받을 수 있게 하는 것
- 부모 클래스의 기능을 유지하면서 새로운 기능을 추가하는 방식으로 기능을 확장할 수 있음
- https://young0105.tistory.com/42
● 상속 == 확장인가?
● 인터페이스
- 기능을 명시적으로 선언하는 설계도이자, 강제성이 있는 약속
- 해당 인터페이스를 구현하는 클래스가 어떤 메서드를 반드시 구현해야 하는지를 지시함
- https://young0105.tistory.com/65
● 추상 클래스
- https://young0105.tistory.com/46
// 인터페이스와 추상 클래스를 비교해서 설명할 수 있어야 함
● 컬렉션 프레임워크 비교
- List : 순서가 있는 데이터들을 저장하는 것
- Set : 순서가 없는 데이터들을 저장하는 것
- Map : key와 value의 쌍으로 이뤄진 데이터들을 저장하는 것
- https://young0105.tistory.com/96
● 힙 메모리 vs 스택 메모리
- https://young0105.tistory.com/27
● int 타입과 Integer 타입의 차이를 힙 메모리 관점에서 설명하기
● JVM
- 자바 가상 머신의 약자
- 컴파일러에 의해 변환된 .class 파일을 운영체제에 특화된 코드로 변환하여 실행하는 역할을 하는 가상의 실행 환경
- 장점 : Java 코드는 어떤 플랫폼에서든 실행 가능함 (이식성)
- 단점
· 이식성을 위해 그러한 단계를 거쳐야 하기 때문에 다른 언어에 비해 실행 속도가 느림
· 메모리 이슈
● 제네릭 프로그래밍
- 다양한 자료형이 적용될 수 있는 클래스를 만드는 것
- 변수의 이름과 기능이 동일하면서, 자료형만 달라지는 변수들을 사용할 때 고려할 수 있음
● Call by Value vs Call by Reference
- Call by Value
: 값을 할당할 때, 값 자체를 넘겨주는 방식
- Call by Reference
: 값이 담긴 변수의 주솟값을 넘겨주는 방식
→ 기존 변수의 값이 변경되면, 주솟값을 넘겨받은 변수의 값도 변경됨
● 깊은 복사 vs 얕은 복사
- 깊은 복사 : 객체의 주솟값을 복사
- 얕은 복사 : 객체의 실제 값을 복사
● 싱글톤 패턴
- 프로그램 내에서 해당 클래스의 객체가 단 하나만 생성되도록 하는 디자인 패턴
- https://young0105.tistory.com/186
● 프로토타입 패턴
- 원본 객체를 새로운 객체에 복사하고, 필요에 따라 수정해서 사용하는 디자인 패턴
● 어댑터 패턴
- 호환되지 않는 클래스들을 함께 이용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 생성해서 사용하는 디자인 패턴
- https://young0105.tistory.com/166
● 빌더 패턴
- 객체를 생성하는 클래스와 객체를 표현하는 클래스를 분리하는 디자인 패턴
- 멤버변수가 많은 객체를 다룰 때, 빌더 패턴을 사용해서 가독성을 높이고 실수를 방지할 수 있음
- https://young0105.tistory.com/159
● 배열 vs 리스트
- 배열 : 선언 시에 크기 지정
→ 정해진 크기의 메모리를 먼저 할당받아 사용함
· index를 이용할 수 있기 때문에, 리스트에 비해 검색 속도가 빠름
· 특정 요소가 삭제되면 빈 공간이 생기게 됨 (메모리 낭비)
- 리스트 : 선언 시에 크기 지정 X
→ 요소를 유연하게 관리할 때 사용
● 가비지 컬렉션
- https://young0105.tistory.com/275
● 웹 컨테이너 vs 웹 서버 vs WAS
- 웹 컨테이너
· JSP와 서블릿이 실행될 수 있는 환경을 제공하는 컴포넌트
· 서블릿을 찾아서 실행하고, 서브릸으로부터 결과를 받아 클라이언트에게 전달함
- 웹 서버
· 클라이언트에서 전송된 HTTP 메시지를 다루는 서버
· 정적 리소스 요청만 처리 가능
- WAS (웹 애플리케이션 서버)
· 웹 서버가 처리하지 못하는 동적 리소스 요청을 처리해서 동적인 컨텐츠를 제공하는 서버
- https://young0105.tistory.com/153
● 자료 구조 - 스택과 큐의 차이
- 스택 : (후입선출) 가장 나중에 입력된 자료가 가장 먼저 출력되는 자료 구조
- 큐 : (선입선출) 가장 먼저 입력된 자료가 가장 먼저 출력되는 자료 구조
- https://young0105.tistory.com/95
● 스택 오버플로우
- 스택형 자료 구조에서 오버플로우가 발생하는 것
- 오버플로우
: 저장 용량을 초과하는 양의 데이터가 입력되었을 때 발생하는 현상
· 기존 자료 중 일부가 지워지는 문제를 일으킬 수 있음
● 프로세스 vs 쓰레드
- 프로세스 : 메모리를 할당받아 실행되고 있는 프로그램
· 하나의 프로세스는 여러 개의 쓰레드를 가질 수 있음
- 쓰레드 : 하나의 프로세스 안에서 실제 작업을 수행하는 작업 단위
- https://young0105.tistory.com/90
● 접근 제어 지시자
- public : 같은 프로젝트 내 어디에서든지 접근 가능
- protected : 같은 패키지 내부거나, 다른 패키지라도 상속 관계라면 접근 가능
- default : 같은 패키지 내부에서만 접근 가능
- private : 같은 클래스 내부에서만 접근 가능
● 업 캐스팅과 다운 캐스팅
- 업 캐스팅
: 다형성을 통해 자식 클래스를 부모 클래스 타입으로도 바라볼 수 있다는 것을 활용해서, 부모 클래스 타입으로 변수를 선언하고, 자식 클래스의 생성자로 인스턴스를 생성하는 것
- 다운 캐스팅
: 부모 클래스의 참조를 자식 클래스의 참조로 변환하는 것
- https://young0105.tistory.com/43
● 생성자, getter, setter 메서드 손코딩
public class 클래스명 {
// 기본 생성자
public 클래스명() {}
// 사용자 정의 생성자
public 클래스명(자료형 매개변수1, 자료형 매개변수2, ...) {
this.멤버변수1 = 매개변수1;
this.멤버변수2 = 매개변수2;
...
}
// getter
public 반환자료형 get변수() {
return this.멤버변수;
}
// setter
public void set변수(자료형 매개변수) {
this.멤버변수 = 매개변수;
}
}
● JRE (Java Runtime Environment)
- 자바 애플리케이션을 실행하는 데 필요한 소프트웨어 구성요소들
● JDK (Java Development Kit)
- 자바 프로그램을 개발, 컴파일, 실행하기 위한 환경 및 도구
● enum 타입
'etc.' 카테고리의 다른 글
[IT] 신입 개발자 기술 면접 질문 정리 4 - Spring Boot 등 (0) | 2024.06.30 |
---|---|
[IT] 신입 개발자 기술 면접 질문 정리 2 - HTML, CSS, JavaScript (0) | 2024.06.22 |
[IT] 신입 개발자 기술 면접 질문 정리 1 - SQL (0) | 2024.06.22 |
[IT] 신입 개발자 인성 면접 질문 정리 (0) | 2024.06.22 |
[Zapier(재피어)] 구글 스프레드시트에 신규 데이터 입력 시 자동 메일 발송 (0) | 2024.04.05 |