시작이 반

Java 기본 기술 면접 준비 본문

기타/면접준비

Java 기본 기술 면접 준비

G_Gi 2021. 5. 4. 23:11
SMALL

JAVA

Java?

- JVM에서 동작하기 때문에 운영체제에 독립적인 언어입니다.

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

- 객체지향 개념의 특징인 캡슐화, 상속화, 추상화, 다형성이 잘 적용 되어있습니다.

- 가비지 컬렉터를 이용한 자동 메모리 관리가 가능합니다.

- 스레드 생성 및 제어와 관련된 라이브러리 api를 제공하고 있기 때문에 멀티 스레드를 쉽게 구현 가능합니다.

 

객체지향 프로그래밍, OPP?

- 데이터를 객체로 취급하여 프로그램에 반영한 것으로 객체와 객체의 상호작용을 통해서 bottom-up 방식으로 프로그램이 작동하는 것입니다.

 

메모리 영역?

- 메소드 영역 : static 변수, 전역변수, class정보들을 저장합니다.

- 스택 영역 : 메소드 호출주소, 매개변수, 지역변수 이러한 임시정보를 저장합니다.

- 힙 영역 : new를 사용하여 동적으로 할당되는 메모리 영역으로 가비지 컬렉션에 의해 관리가 됩니다.

 

Call by value(자바)

- 변수의 값을 복사하여 인자로 전달하는 것으로 넘겨받은 함수의 인자 값을 변경해도 외부에서는 그 값이 변경되지 않습니다. 객체를 인자로 넘겼을 때 힙영역을 가리키는 복사된 주소값이 넘어가기 때문에 해당 객체의 필드 값들은 바꿀 수 있지만 대상은 바꿀 수 없습니다.

Call by reference

- 실제 주소의 값을 인자로 전달하는 것입니다.

 

가비지 컬렉션?

- 시스템에서 사용된 동적 메모리들이 더 이상 사용되지 않을 때 다시 사용가능한 자원으로 회수 하는 것입니다. JVM에서 가비지 컬렉터라고 불리는 데몬 쓰레드에 의해 일어납니다.

 

접근 제어자

- Public : 클래스끼리 접근가능

- private : 해당 클래스에서만 접근 가능

- protected : 상속관계에 있는 하위 클래스에서만 접근 가능

- package : 동일 패키지에 있는 클래스끼리 접근 가능

 

Static?

- 클래스가 로딩될 때 메모리 공간이 할당되는데 처음 할당된 메모리 공간이 변하지 않음을 의미합니다.

 

String vs StringBuffer vs StringBuilder

- String : String은 불변성을 가지는 클래스로 문자열이 추가되는 연산이 이루어질 경우 처음 생성된 인스턴스는 가비지 컬렉션에 의해 제거가 되고 새로운 인스턴스가 생성이 됩니다.

- StringBuilder : 가변성을 가지는 클래스로 동일 객체내에서 문자열을 변경하는 것이 가능합니다. 하지만 동기화를 지원하지 않기 때문에 단일 쓰레드에서 사용하는 것이 좋습니다.

- StringBuffer : 가변성을 가지는 클래스로 동일 객체내에서 문자열을 변경하는 것이 가능합니다. 동기화를 지원하기 때문에 멀티 쓰레드 환경에서 안정성을 가지고 있습니다.

*동기화 해당 쓰레드만 제외하고 나머지는 접근을 못하도록 막는 것

 

추상 클래스란?

- 추상 메소드를 하나이상 가지고 있는 클래스로 직접적으로 객체 생성이 불가능하며 클래스를 상속받아서 오버라이딩하여 사용해야 합니다. 자식 클래스를 구체화해서 확장의 목적으로 사용됩니다.

 

인터페이스란?

- 모든 메소드가 구현부가 없는 추상 메소드로 이루어진 클래스입니다. 공통목적으로 사용되지만 각각의 구현이 다를 때 사용해야 하는 경우에 사용됩니다.

 

오버라이딩

- 부모 클래스의 메소드를 자식 클래스의 메소드로 재정의 하는 것으로 기능 확장을 위해 사용됩니다.

 

오버로딩

- 같은 클래스 내에서 같은 이름의 메소드를 여러 개 정의하는 것입니다. 이것은 인자의 타입과 개수에 의해 정의할 수 있습니다.

 

다형성이란?

- 서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 것이 다형성 입니다.

 

캡슐화란?

- 정보은닉을 통해서 높은 응집도와 낮은 결합도를 유지할 수 있게 해주는 설계 원리입니다. private접근자를 통해서 구현할 수 있습니다.

* 결합도란 서로 다른 모듈 간의 의존하는 정도, 응집도란 한 모듈 내부의 요소들이 연관된 정도

 

상속이란?

- 자식클래스가 부모클래스의 메소드, 변수들을 물려받으며 오버라이딩을 통해 확장 시킬 수 있습니다.

 

추상화란?

- 인터페이스로 클래스의 공통적인 특성들을 묶어서 표현한 것입니다.

 

쓰레드란?

- 프로세스 내에서 동시에 실행되는 독립적인 실행 단위를 말합니다. 적은 자원을 이용하여 구현이 가능합니다. 하지만 교착상태에 빠질 수 있으므로 구현에 신중해야 합니다.

 

싱글톤 패턴이란?

- 클래스의 인스턴스가 하나만 만들어지도록 하고 그 인스턴스에 대해서 전역 접근을 제공합니다. 인스턴스가 하나만 생성이 되기 때문에 메모리적으로 효율적이고 두번째 호출부터 로딩시간이 줄어들어 효율을 높일 수 있습니다.

 

JVM이란?

- 자바를 실행하기 위한 가상 머신으로 프로그램의 메모리 관리를 해주며 바이트 코드를 OS가 이해할 수 있도록 해석해 줍니다.

 

 DAO?

- Data Access Object의 약자로 데이터베이스의 데이터에 접근을 위한 객체 입니다.

 

DTO?

- Data Transfer Object의 약자로 계층간의 데이터를 교환하기 위한 객체 입니다. ( 모델, , 컨트롤러)

 

제네릭이란?

- 모든 종류의 타입을 다룰 수 있도록 일반화된 타입을 말합니다.

 

Wrapper Class?

- primitive 타입으로(정수형, 실수형, 문자형, 논리형) 표현할 수 있는 간단한 데이터를 객체화 하는 것입니다.

 

절차지향 vs 객체지향적

- 절차지향은 순차적으로 프로그램을 실행하는 것으로 컴퓨터 처리구조와 비슷해 실행 속도가 빠릅니다.

- 객체지향적 프로그램은 객체간의 상호작용을 통해 프로그램이 실행되는 것으로 유지보수와 재활용하기 좋습니다.

 

에러 – 하드웨어의 오작동

예외 – 개발자의 잘못된 코딩

 

직렬화란 무엇인가요?

- 자바 내부에서 사용하는 데이터를 외부에서 사용할 수 있게 바이트형태로 변환하는 기술입니다.

 

자바 vs 코틀린

- 코틀린은 널에대해 안전하고 타입을 작성하지 않아도 추론이 가능합니다.

- 자바와 100% 호환된다는 특징이 있습니다.

- 게터 세터와 같은 메소드를 정의하지 않고 편하게 사용하는 방법이 존재합니다. (data)

 

자바8 이후 추가된것?

- 람다(자바8 타입지정, 자바11 타입유추)

- 옵셔널(널 처리를 위해)

- 스트림(배열, 리스트 연속된 데이터 처리)

- 디폴트 메소드(인터페이스의 구현메소드)

 

Solid

 

 

 

 

 

 

 

SQL

데이터 베이스란?

- 한 조직에서 업무를 처리하기위해 공유하여 사용할 목적으로 저장된 데이터의 집합입니다.

 

트랜젝션이란?

- 트랜잭션(Transaction 이하 트랜잭션)이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다.

 

데이터베이스 언어란?

- 정의어(DDL) : 데이터베이스를 정의하는 언어를 말합니다. , 테이블을 생성, 수정, 삭제를 할 수 있으며 create, alter, drop이 있습니다.

- 조작어(DML) : 말그대로 데이터베이스를 조작하는 언어입니다. 데이터베이스 내의 자료를 검색, 삽입, 수정, 삭제를 할 수 있으며 select, insert, update, delete 가 있습니다.

- 제어어(DCL) : 데이터에 대해 무결성, 병행 수행 제어, 보호와 관리를 위한 언어입니다. Commit, rollback, grant(권한부여), revoke(권한회수)가 있습니다.

 

스키마란?

- 데이터 베이스의 전체적인 구조와 제약조건에 대한 명세를 정의한 것입니다.

 

무결성이란?

- 데이터에 여러가지 제한을 두어 데이터를 정확하고 유효하게 보증하는 것을 말합니다. 무결성은 개체 무결성, 참조 무결성, 도메인 무결성, 키 무결성, null 무결성, 고유 무결성이 있습니다.

 

뷰란?

- 하나 이상의 테이블로부터 유도되어 만들어진 가상 테이블입니다. 실제로 기억공간을 차지하지 않으며 논리적 독립성을 제공하고 데이터 접근 제어로부터 보안성이 제공됩니다.

 

인덱스란?

- 책의 목차 같은 역할을 하며 테이블의 전체 데이터 중 적은 양을 조회할 때 사용됩니다. 데이터의 유일성이 높고 범위가 넓을수록 인덱스의 효율이 올라갑니다.

 

Group by절이란?

- 집계함수와 같이 사용되며 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별로 통계정보를 얻을 때 사용됩니다. 같이 having 절이 사용되며 그룹에 대해 조건을 걸 때 사용됩니다.

 

고유키와 기본키 차이?

- 고유키는 고유키의 속성이 있는 컬럼의 로우들은 서로 다른 값을 가져야 하며 이때 null 값도 포함됩니다. 하지만 기본키는 테이블에서 한 컬럼만 가질 수 있으며 null일수 없습니다.

 

함수적 종속이란?

- x의 값에 따라 y의 값이 결정될 때 yx에 대해 함수적 종속이라고 합니다. 만약 x의 값이 여러 개 즉, x1, x2가 있을 경우 x1x2y의 값을 결정한다면 이를 완전 함수적 종속이라고 하고 x1, x2중 하나만 y의 값을 결정할 때 부분 함수적 종속이라고 합니다.

 

정규화란?

- 관계형 데이터베이스 설계에서 중복을 최소화 하여 데이터를 구조화 하는 것을 정규화라고 합니다. 정규화는 6정규화 까지 있지만 보통 3정규화 까지 합니다. 1정규화는 모든 속성의 도메인이 원자 값으로만 구성되었는 것입니다. 2정규화는 모든 컬럼이 완전 함수적 종속을 만족하는 것입니다. 3정규화는 이행함수 종속을 제거하는것입니다.

 

파티셔닝이란?

- 서비스의 크기가 커지면서 DB에 저장하는 테이블 또한 용량이 커지면서 용량의 한계와 성능저하를 발생시킵니다. 이를 극복하고자 파티션이라는 작은 단위로 물리적으로 분할하는 것을 의미합니다. 파티셔닝의 종류로는 수평파티셔닝과 수직 파티셔닝이 있으며 분할 기준으로는 범위, 목록, 해쉬, 합성 분할이 있습니다.

 

Sql

Select

From

Where

 

Group by

Having

 

Order by

Limit

 

Spring

MVC모델이란?

- 모델, , 컨트롤러로 역할을 나누어 처리하는 패턴으로 코드의 재사용과 개발에 소요되는 시간을 줄일 수 있다는 특징이 있습니다. 여기서 모델은 비즈니스 로직과 DB와 상호작용하는 역할을 합니다. 뷰는 화면을 출력하는 역할을 하며 컨트롤러는 뷰와 모델 간의 정보를 교환하는 역할을 합니다.

 

Framework?

- 하나의 애플리케이션을 구축할 때 동일한 개발환경을 제공해주는 것으로 클래스, 인터페이스 프레임들의 집합입니다. 특정 틀을 만들어 놓고 그 위에 계속해서 코드를 작성하는 방식으로 개발시간을 줄여줍니다. 이는 여러 개발자가 시스템의 통합성과 일관성을 유지하면서 개발할 수 있게 도와줍니다.

 

DI?

- 의존성 주입으로 서비스나 계층 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜주는 특징입니다. 따라서 여러 객체 간의 결합이 줄어듭니다.

IOC?

- 제어의 역전으로 인스턴스 생성의 제어를 개발자가 아닌 bean을 관리하는 컨테이너가 관리하는 것을 말합니다.

 

AOP?

- 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리하는 것입니다.

LIST

'기타 > 면접준비' 카테고리의 다른 글

네트워크 기본 기술 면접 준비  (0) 2021.12.07
JPA 기본 기술 면접 준비  (0) 2021.12.07
Spring 기본 기술 면접 준비  (0) 2021.12.07
DB 기본 기술 면접 준비  (0) 2021.12.07