JaeWon's Devlog
article thumbnail
Published 2020. 3. 1. 17:44
Java 면접 준비 면접
반응형

개발자 신입으로 준비하면서 면접에 대비한 것들과 질문받은 것을 정리해본다.

 

2020/03/01 - [면접] - Spring 면접 준비

2020/03/01 - [면접] - JSP 면접 준비


정리

Java

- 객체지향 프로그래밍 언어

- 다른 언어와 비교하여 자바의 가장 큰 특징은 운영체제 없이 독립적이라는 점.

- 운영체제에 관계없이 같은 코드를 사용 가능

- OS 위의 JVM이라는 가상 머신 위에서 자바가 실행되기 때문

OOP (객체 지향 프로그래밍)

- 프로그래밍에서 필요한 데이터를 추상화시켜서 상태와 행위를 가진 객체를 만들고

  그 객체들 간의 유기적인 상호작용을 통해 로직을 구현하는 프로그래밍

- 장점 : 코드 재사용이 용이 / 유지보수가 쉬움

- 단점 : 처리속도가 느리다 / 객체가 많으면 용량이 커진다.

객체 / 클래스 / 인스턴스

- 객체 : OOP 에서 데이터(변수)와 그 데이터에 관련되는 동작(함수). 즉, 절차, 방법, 기능을 모두 포함한 개념

- 클래스 : 집단에 속하는 속성과 행위를 변수와 메서드로 정의한 것

- 인스턴스 : 클래스에서 정의한 것을 토대로 실제 메모리상에 할당하는 것

추상화

- 공통의 속성이나 기능을 묶어 이름을 붙이는 것

캡슐화

- 목적 : 코드를 재수정 없이 재활용하는 것

- 기능과 특성의 모음을 클래스라는 캡슐에 분류해서 모아두는 것

상속

- 부모 클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게 하고 기능의 일부분만
  변경해야 할 경우, 상속받은 자식 클래스에서 해당 기능만 다시 수정하여 사용할 수 있다.

다형성

- 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 것

- 오버 라이딩 : 부모 클래스의 메서드와 같은 이름, 매개변수를 재정의 하는 것

- 오버 로딩 : 같은 이름의 함수를 여러 개 정의하고,

                매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것

Getter, Setter를 사용하는 이유

- 메서드를 통해서 접근하기 때문에, 메서드 안에서 매개변수같이 어떤 올바르지 않은 입력에 대해

  사전에 처리할 수 있게 제한하거나 조절할 수 있다.

인터페이스

- 클래스의 템플릿

- 멤버 변수, 멤버 함수를 가질 수 없고, 추상 메소드만 가질 수 있다. 즉, 껍데기만 있는 클래스

- 인터페이스는 여러 클래스의 사용 방법이 같음을 보장합니다.

- list 인터페이스를 implement 하는 클래스 들인 ArrayList, LinkedList는 공통적으로

  add(), clear(), indexOf(), get() 등의 메서드를 가지고 있습니다.

추상 클래스 / 인터페이스

공통점 

- 추상 클래스와 인터페이스는 선언만 있고 구현 내용이 없는 클래스

- 자식 클래스가 무언가 반드시 구현하도록 위임해야 할 때 사용

차이점

- 추상 클래스는 구체화시킬 구현체를 추상화시키는 기법이며

  인터페이스는 구현할 컴포넌트의 표준을 정하는 것입니다.

접근 제한자(Public > Protected > Default > Private)

Public

- 접근 제한이 없다.(같은 프로젝트 내에 어디서든 사용 가능)

Protected

- 같은 패키지 내, 다른 패키지에서 상속받아 자손 클래스에서 접근 가능

Default

- 같은 패키지 내에서만 접근 가능

Private

- 같은 클래스 내에서만 접근 가능

LinkedList / ArrayList

LinkedList

- 다음 자료의 위치 정보를 가지며, 인덱스는 가지고 있지 않다.

- 데이터의 추가/삭제는 다음 데이터 위치정보만 수정하면 되므로
  많은 정보의 추가/삭제가 일어날 때 유용하다.

- 대신 데이터 조회(검색) 시 처음 자료부터 찾아 나가야 하므로 느려지는 단점이 있다.

ArrayList

- 배열의 복사에 의한 데이터 저장처리를 내부적으로 수행하므로
  많은 데이터의 추가/삭제 시에는 성능이 떨어지나 각 데이터에 대한 인덱스를 가지고 있기 때문에
  조회(검색)에 있어서 빠르다. (성능이 좋다)

프로세스 / 쓰레드

쓰레드

- 프로세스 내에서 동시에 실행되는 독립적인 실행 단위

- 장점 : 자원을 많이 사용하지 않고 구현이 쉬우며 범용성이 높다.

- 단점 : 교착상태에 빠질 수 있다.

(교착상태 : 다중 프로그래밍 체제에서 하나 또는 그 이상의 프로세스가 수행할 수 없는

               어떤 특정 시간을 기다리고 있는 상태)

프로세스

- 운영체제에서 실행 중인 하나의 프로그램(하나 이상의 쓰레드를 포함한다.)

Thread 와 Process 차이

- 프로세스는 여러 분야에서 ‘과정’ 또는 ‘처리’라는 뜻으로 사용되는 용어로 컴퓨터 분야에서는

  ‘실행 중인 프로그램’이라는 뜻으로 쓰인다. 이 프로세스 내에서 실행되는 각각의 일을 스레드라 한다.

- 프로세스 내에서 실행되는 세부 작업 단위로 여러 개의 스레드가 하나의 프로세스를 이루게 되는 것

자바의 메모리 영역

메서드 영역

- static 변수, 전역 변수, 코드에서 사용되는 class 정보 등이 올라간다.

- 코드에서 사용되는 class들을 로더로 읽어 클래스별로
  런타임 필드 데이터, 메서드 데이터 등을 분류해 저장

스택(Stack)

- 지역변수, 함수(메서드) 등이 할당되는 LIFO 방식의 메모리

힙(Heap)

- new 연산자를 통한 동적 할당된 객체들이 저장되며, Garbage 컬렉션에 의해 메모리가 관리되어진다.

equals 와 == 차이

- == : 주소 값을 비교

- eqauls : 내용 자체를 비교(즉, 데이터 값을 비교)

- 안정적으로 문자열을 비교하고자 한다면 equals() 메소드를 사용하는 게 좋다.

반응형

'면접' 카테고리의 다른 글

Spring 면접 준비  (2) 2020.03.01
JSP 면접 준비  (0) 2020.03.01
profile

JaeWon's Devlog

@Wonol

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!