자바 기술면접 질문 리스트
출처
공통질문
저희 회사에 대해 들어보셨나요? 어떤 회사로 알고 있나요?
해당 직무로 지원한 이유가 있나요?
해당 직무로 지원하기 위해서 어떤 준비를 하셨나요?
1분 자기소개 부탁 드립니다.
현재 IT 분야 중에 가장 관심있는 분야는 무엇인가요?
기술 질문
Tip
기술질문에서 개념, 용도, 장단점은 꼭 알아야 한다.
프레임워크와 라이브러리의 개념/용도/장단점은?
라이브러리
- 정의
- 함수(메서드) 단위의 독립성을 가진 최소단위의 기능이다.
- 재 사용 가능한 최소 단위 기능 또는 기능들의 집합이다.
- 독립성 : 기능을 사용하기 위해 다른 라이브러리를 참조해야 하는 수고가 최대한 적어야 한다.
- 예시
- 데이터를 정렬/역정렬하는 기능
- 데이터를 하나씩 반환하는 기능
- 날짜에서 요일을 반환하는 기능
- 숫자의 사칙연산
- 종류
- 표준 라이브러리
- Java SDK
- 사용자 라이브러리
- 표준 라이브러리를 사용하여 만든 라이브러리
- 기능별로 그룹화하여 Wrapping
- jQuery
- 표준 라이브러리
프레임워크
- 정의
- 라이브러리와 다른 프레임워크의 집합체이다.
- 여러개의 라이브러리와 프레임워크를 이용해서 다른 모듈을 만들어 낸다.
- 잘만들어진 완성된 프레임워크를 포함시키기도 한다.
- 장점
- 개발 또는 실행 플랫폼을 신경쓰지 않아도 된다.
- 개발자가 고민해야 하는 대부분을 프레임워크가 해준다.
- 개발 일정이 단축된다.
- 재사용이 가능하다.
- 단점
- 느리다, 무겁다, 비용이 많이 든다.
- 오픈 소스가 아닌 경우 통제가 안된다.
Tip
- 프레임워크를 꼭 사용해야 할까?
- 속도와 성능이 필요한 서버 개발만 Native로 하면된다.
- 성능과 개발 생산성을 함께 고려해야 한다
- 최적화가 중요하다
데이터 타입
객체지향 언어와 절차지향 언어의 차이/장단점/종류는?
- 객체 지향 언어란 : 특정한 개념의 함수와 자료형을 함께 묶어서 관리하기 위해 탄생한 것이다.
- 객체 내부에 자료형과 함수가 같이 존재하는 것이다.
- 절차지향 언어란 : 반복될 가능성이 있는 것들을 재사용이 가능한 프로시저 함수로 만들어 사용하는 프로그래밍 방식
객체지향 언어의 특징은?
- 추상화 : 공통특성을 하나의 집합으로 만들어내는 것
- 캡슐화 : 낮은 결합도를 유지할 수 있도록 정보 은닉을 활용해 설계하는 것
- 상속 : 일반화 관계, 또다른 캡슐화
- 다형성 : 서로 다른 클래스 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 것
데이터타입과 변수의 차이는?
-
변수 : 변수란 데이터의 저장과 참조를 위해 할당된 메모리 공간이다.
-
데이터 타입 : 컴퓨터 메모리는 비트의 패턴을 저장하는데, 이러한 비트들의 패턴에 관계를 두어서 더 쉽게 사용할 수 있도록 만드는 것이 데이터 타입이다.
데이터 타입이란?
- 컴퓨터 메모리는 비트의 패턴이 저장되는데, 같은 비트로 저장되어 있더라도 달리 해석하기 위해 필요한 것이 데이터 타입이다.
- 데이터 타입은 데이터가 어떻게 표현되고 사용될지를 결정한다.
- 데이터 타입에 따라 컴퓨터가 어떻게 데이터를 다룰지 알 수 있다.
- 컴퓨터에 저장된 모든 값은 데이터타입에 의해서 표현될 수 있다.
- 데이터 타입은 저장하는 데이터에 따라서 표현하는 방법을 달리하기 위해서, 그리고 저장공간을 효율적으로 사용하기 위해서 사용되는 것이다.
Value Type과 Refference Type의 차이/종류는?
- Refference Type은 프리미티브 타입과 달리 JVM Runtime Data Area 영역 중 heap 영역에 할당된다.
- 레퍼런스 타입의 변수 주소값에는 값이 아닌 heap 영역에 할당된 주소가 저장된다
value type은 stack 영역에 저장되는 형식이고 primitive type은 언어에서 기본으로 제공해주는 타입이죠. value/reference type을 질문했다면 stack과 heap 메모리 구조와 관련 데이터형식, 장단점을 이해해야 합니다~^^
왜 char type과 string type으로 나눠져 있을까요?
heap영역과 stack영역에 대해서 설명해보시오
-
‘heap 영역'은 사용자의 동적 할당 데이터, ‘stack 영역'은 지역 변수나 매개 변수를 저장한다.
- 힙 영역은 생성자/ 소멸자 또는 garbage collector에 의해 데이터가 저장/ 소멸되고,
- 스택 영역은 함수의 스코프 안에서 저장/ 소멸된다.
왜 굳이 stack이라는 영역이 있을까요? 그냥 모든 데이터를 heap 영역에 저장하면 안되나요?
.equals와 ==의 차이는?
String a = "12345";
방식과 String b = new String("12345");
방식의 차이는?
아래 결과와 그 이유는?
- 문제
String a = "12345";
String b = new String("12345");
System.out.println(a==b);
System.out.println(a.equals(b));
- 정답
String a = "12345";
String b = new String("12345");
System.out.println(a==b); // false
System.out.println(a.equals(b)); // true
- 이유
아래 결과와 그 이유는?
- 문제
String a = "54321";
String b = new String("12345");
System.out.println(a==b);
System.out.println(a.equals(b));
- 정답
String a = "54321";
String b = new String("12345");
System.out.println(a==b); // false
System.out.println(a.equals(b)); // false
- 이유
.equals
에서 2개의 객체가 같다는 것을 어떻게 비교하는가?
eqauls
: 메소드, 대상 내용 자체 비교==
: 연산자, 주소값 비교
a.equals(b)
에서 equals 함수가 2개의 객체가 같은 메모리를 바라보고 있다는 것, 같은 메모리 주소를 참조한다는 것을 어떻게 알까요?
hashCode에 대해서 설명해줄 수 있나요?
.equals
함수가 hashCode를 어떻게 이용해서 두개의 객체가 같은지 다른지를 판단할까요?
hashCode를 이용해서 같은 객체인지를 비교하는 방법을 설명해줄 수 있나요?
Car라는 클래스가 있고, Animal이라는 클래스가 있습니다. 이 두 클래스에는 Name이라는 Attribute(Property)를 가지고 있습니다.
이 두 객체의 Name의 값이 같으면 같다라고 하고싶은데 어떻게 하면 될까요?
- .equals를 오버라이딩해서 비교한다.