본문 바로가기
면접

[신입 개발자 면접 준비 1] Java 편

by 챠챠12 2020. 10. 2.

1. Java

: JAVA는 네트워크상에서 사용할 수 있도록 미국의 선 마이크로 시스템즈가 개발한 객체 지향 프로그래밍 언어

- 자바가상머신(JVM)만 설치하면 컴퓨터의 운영체제에 상관없이 작동(즉, 운영체제에 독립적)

- 기본 자료형을 제외한 모든 요소들이 객체로 표현

- 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어

- Garbage Collector를 통한 자동적인 메모리 관리

- 멀티쓰레드(Multi-thread)를 지원

 

2. OOP(Object-Oriented Programming) 객체지향 프로그래밍

: 데이터를 객체로 취급하여 프로그램에 반영한 것이며, 순차적으로 프로그램이 동작하는 기존의 것들과는 다르게 객체와 객체의 상호작용을 통해 프로그램이 동작하는 것을 말한다.

특징

- 객체지향 프로그래밍은 코드의 재사용성이 높음

- 코드의 변경이 편함

- 직관적인 코드분석 가능

- 개발속도 향상

- 상속을 통한 장점 극대화

 

3. Garbage Collection

: 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 Garbage Collection을 수행하는 부분을 Garbage Collector라고 부른다.

 

4. Object

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

- 과일가게에서 과일을을 사는 경우, 실체인 '손님'과 동작인 '과일 구매'는 하나의 객체이며, 실체인 '과일가게주인'과 동작인 '과일 판매'도 하나의 객체이다.

 

5. Overloading vs Overriding (오버로딩 vs 오버라이딩)

오버로딩

- 클래스 내의 같은 이름의 메소드를 여러개 정의하는 것

- 매개변수의 타입이 다르거나 개수가 달라야 한다.

- return type과 접근 제어자는 영향을 주지 않음.

오버라이딩

- 상속에서 나온 개념

- 상위 클래스(부모 클래스)의 메소드를 하위 클래스(자식 클래스)에서 재정의 

 

- 다형성 물어보면 자바에서는 오버로딩과 오버라이딩 말하는 것이다. (쉽게 말해 저는 하나이지만, 회사에 있으면 회사원, 학교에 있으면 학생이라는 구성원)

 

7. Interface, Abstract 

Interface

- 클래스가 아니다.

- 오직 추상메서드와 상수만을 멤버로 갖는다.

- Implements 키워드를 사용

- 상속의 관계가 없는 클래스간 서로 공통되는 로직을 구현하여 쓸 수 있도록한다.

- Extends는 하나의 클래스만 상속 가능하나 Interface는 다중 상속이 가능하다.

Abstract

- 추상메서드를 하나 이상 가진 클래스

- 자신의 생성자로 객체 생성 불가능

- 하위 클래스를 참조하여 상위 클래스의 객체를 생성

- 하위 클래스를 제어하기 위해 사용

 

공통점 

- new 연산자로 인스턴스 생성 불가능.

- 프로토타입만 있는 메서드를 갖는다

- 사용하기 위해서는 하위클래스에서 확장/구현 해야 한다. 

차이점

- 사용하는 키워드가 다르다.

- Abstract는 일반 메서드를 사용할 수 있지만, Interface는 메서드 선언만 가능하다.

 

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

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

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

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

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

 

8. Static

- 클래스가 로딩될 때, 메모리 공간을 할당하는데 처음 설정된 메모리 공간이 변하지 않음을 의미

- 객체를 아무리 많이 만들어도 해당 변수는 하나만 존재(객체와 무관한 키워드)

 

9. Primitive type, Reference Type (기본형 vs 참조형)

Primitive type : stack 메모리 영역에 실제 값을 저장하는 데이터 타입이며, 변수에 값 자체를 저장 

- 정수형 byte, short, int, long

- 실수형 float, double

– 문자형 char

- 논리형 boolean

 

Primitive type은 Wrapper Class를 통해 객체로 변형할 수 있다. 

예) int→Integer, char→Character(int와 char를 제외한 Primitive type의 다른 자료형들은 맨 앞 알파벳을 대문자로 바꿔주면 된다. float→Float)

 

Reference type : 메모리상에 객체가 있는 위치를 저장

- 종류 : Class, Interface, Array

 

10.Wrapper Class

: Primitive type으로 표현할 수 있는 간단한 데이터를 객체로 만들어야 할 경우가 있는데 그러한 기능을 지원하는 클래스

 

11. Thread

장점 

- 빠른 프로세스 생성

- 적은 메모리 사용

- 쉬운 정보 공유

Thread 단점

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

- 교착상태 : 다중프로그래밍 체제에서 하나 또는 그 이상의 프로세스가 수행 할 수 없는 어떤 특정시간을 기다리고 있는 상태. 

Thread와 Process 차이

- 여러 분야에서 '과정' 또는 '처리'라는 뜻으로 사용되는 용어로 컴퓨터 분야에서는 "실행중인 프로그램" 이라는 뜻으로 쓰인다.

- 이 프로세스 내에서 실행되는 각각의 일을 스레드라고 한다. 프로세스 내에서 실행되는 세부 작업 단위로 여러 개의 스레드가 하나의 프로세스를 이루게 되는 것이다.

 

12. Call by Value, Call by Reference 

Call by Value

: 매개 변수의 원래 주소에 값을 저장하는 방식. 클래스 객체를 인수로 전달한 경우

Call by Reference 

: 인수로 기본 데이터형을 사용. 주어진 값을 복사하여 처리하는 방식. 메서드 내의 처리 결과는 메서드 밖의 변수에 영향을 미치지 않는다.

 

13. Stack, Queue

Stack

: - 클래스가 로딩될 때, 메모리 공간을 할당하는데 처음 설정된 메모리 공간이 변하지 않음을 의미

- 객체를 아무리 많이 만들어도 해당 변수는 하나만 존재(객체와 무관한 키워드)

- LIFO(Last In First Out)의 후입선출 구조

- push();를 이용한 데이터 입력, pop();을 이용한 데이터 출력

- 예) 시스템 스택 : 함수의 호출과 복귀 순서는 스택의 구조를 응용하여 관리

- 역순 문자열 만들기, 수식의 괄호 검사, 수식의 후위 표기법 변환

QUEUE

- FIFO(First In First Out)의 선입선출 구조

- enQueue();를 이용한 데이터 입력, deQueue();를 이용한 데이터 출력

- 예) 우선순위가 같은 작업 예약(인쇄 대기열), 선입선출이 필요한 대기열(티켓 카운터)

- Linear Queue(선형큐)는 메모리 재사용이 불가능 이러한 문제점을 보완하여 Circular Queue(원형 큐)가 나옴

 

14. Singleton Design Pattern(싱글톤 디자인 패턴, 싱글톤 패턴)

: 클래스 인스턴스가 하나만 만들어지도록 하고, 그 인스턴스에 대한 전역 접근을 제공한다.

 

15. DAO, DTO

DAO : Data Access Object의 약자로 간단히 데이터베이스의 데이터에 접근을 위한 객체이다. 데이터베이스에 접근을 하기위한 로직과 비즈니스 로직을 분리하기 위해서 사용한다. DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다.

 

DTO : Data Transfer Object의 약자로 VO(Value Object)로 바꾸어 말할 수 있는데 계층간 데이터 교환을 위한 JavaBean을 말합니다. 여기서 말하는 계층이란 Controller, View, Business Layer, Persistent Layer를 말하며 각 계층간 데이터 교환을 위한 객체를 DTO 또는 VO라고 부릅니다. 그런데 VO는 동일한 개념이지만 read only 속성을 가집니다.

 

16. 변수 명명법

- 헝가리언 표기법 : 자료형을 식별자에 같이 포함

ex) inum; int int_num; 인터페이스명.

 

- 파스칼 표기법 : 식별자가 한 단어나 혹은 여러 단어로 조합(언더바X), 각단어의 첫문자만 대문자로 

ex) KorScore

 

- 캐멀 표기법 : 모든 단어를 공백없이 조합(언더바X) – 첫단어의 첫문자는 소문자로 

ex) korScore

 

- 스네이크 표기법 : ex)eng_score

 

17, 프로젝트 진행 과정 

: 요구사항분석 – 설계(DB, 화면, 클래스) – 개발 – 테스트 – 이관/교육 – 프로젝트 종료

 

18. 자바 컬렉션의 대표 인터페이스

List

- 순서가 있는 데이터의 집합으로 데이터의 중복을 허용하며 인덱스로 조회한다.

 

Set

- 순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.

 

Map

- 키와 벨류값의 쌍으로 이루어진 데이터 집합으로 순서는 유지되지 않으며 키는 중복은 허용하지 않지만 벨류값은 중복을 허용한다.

 

19. JDBC(Java Data Base Connection) 

: Java 언어를 통해 데이터 베이스에 접근 할 수 있는 프로그래밍을 의미

 

20. Java의 메모리 영역

- 메서드 영역 : static 변수, 전역변수, 코드에서 사용되는 Class 정보 등이 올라간다. 코드에서 사용되는 class들을 로더로 읽어 클래스별로 런타임 필드데이터, 메서드 데이터 등을 분류해 저장한다.

 

- 스택(Stack) : 지역변수, 함수(메서드) 등이 할당되는 LIFO(Last In First Out) 방식의 메모리

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

 

LIST

댓글