분류 전체보기
-
기술 면접 - JAVA (고급)기술 면접 2021. 4. 23. 00:10
16. 제네릭 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능 객체의 타입을 컴파일 타임에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어듬 장점 타입 안정성 제공 타입 체크와 형변환을 생략 가능하므로 코드가 간결해진다 17. Functional Interface 하나의 추상 메소드를 가지고 있는 인터페이스 public interface FunctionalInterface { public abstract void doSomething(String text); } static 메서드나 default 메서드의 개수에는 제약이 없음 사용 이유 java에서 함수를 일급객체처럼 다룰 수 있게 하기 위함 람다식을 사용하게 만드는 배경 18. 람다 람..
-
기술 면접 - JAVA(Collection)기술 면접 2021. 4. 23. 00:09
15. Collection 컬렉션 프레임워크 (Collections Framework) 컬렉션 프레임워크란 데이터 군(컬렉션)을 저장하는 클래스들을 표준화한 설계를 뜻한다. 프레임워크는 표준화된 프로그래밍 방식을 의미한다. Java API 문서에서는 컬렉션 프레임워크를 데이터 군(group)을 다루고 표현하기 위한 단일화된 구조라고 정의한다. 자바의 컬렉션 프레임워크는 다수의 데이터를 다루는 데 필요한 다양하고 풍부한 클래스들을 제공한다. 컬렉션 프레임워크의 핵심 인터페이스 컬렉션 프레임워크에서는 각 컬렉션을 다루는 데 필요한 기능을 가진 3개의 인터페이스를 정의했다. 인터페이스 List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가로 정의했다. Collection ..
-
기술 면접 - JAVA (OOP)기술 면접 2021. 4. 23. 00:08
10. 오버로딩, 오버라이딩 오버로딩 매개변수의 타입과 개수를 변경하면서 같은 이름의 메소드를 여러 개 사용하는 기술 오버라이딩 상위 클래스가 가지고 있는 메소드를 하위 클래스에서 재정의하여 사용하는 기술 다형성을 만들어낸다 11. 인터페이스 vs 추상 클래스 추상 클래스 개념 추상 메서드를 가지고 있으며, abstract로 선언된 클래스 구현 하위 클래스에서 상위 클래스의 모든 추상 메서드를 오버라이딩하여 실행 가능한 코드로 구현 목적 인스턴스를 생성하기 위함이 아니고, 상속을 위한 상위 클래스로 활용함 (인스턴스 생성 불가) 여러 클래스의 공통된 부분을 추상화, 메서드의 동작을 하위 클래스에게 위임한다 인터페이스 개념 추상 메서드와 상수만을 포함하고, interface 키워드를 사용하여 선언 구현 인..
-
기술 면접 - JAVA (기본)기술 면접 2021. 4. 22. 02:13
1. JAVA 언어 특징 운영체제에 독립적 JVM에서 동작하기 때문에, 특정 운영체제에 종속되지 않음 하지만 JVM은 운영체제마다 따로 설치해야 한다 객체 지향 언어 캡슐화, 상속, 다형성, 추상화 객체 지향 설계 5원칙(SOLID) 가비지 컬렉터를 통한 자동 메모리 관리 멀티 스레드를 쉽게 구현 동적 로딩을 지원 애플리케이션이 실행될 때 모든 객체가 생성되는 것이 아니고, 각 객체가 필요한 시점에 클래스를 동적 로딩해서 사용 2. JVM(Java Virtual Machine) JVM의 구조 중 메모리 구조는 다음과 같이 구성됩니다. Method Area(메소드 영역): 클래스 변수의 이름, 타입, 접근 제어자 등과 같은 클래스와 관련된 정보를 저장한다. 그 외에도 static 변수, 인터페이스 등이 저..
-
기술 면접 - 자료구조 (Hash 테이블)기술 면접 2021. 4. 22. 02:12
테이블이란 저장되는 데이터가 key와 value가 하나의 쌍을 이루는 것 테이블에 저장되는 모든 데이터들을 이를 구분하는 키가 있어야 하고, 이 키는 데이터를 구분하는 기준이 되기 때문에 중복이 되어서는 안됨 해쉬 함수 키값이 배열의 인덱스 값으로 사용하기에는 적당하지 않다! 키값의 범위가 매우 넓어서 매우 큰 배열이 필요하다! 이 두 가지 문제를 동시에 해결해 주는 것이 해쉬 함수 넓은 범위의 키를 좁은 범위의 키로 변경하는 역할을 수행함 충돌 만약 서로 다른 두 개의 키가, 해쉬 함수를 통과하였는데, 그 결과가 같다면 이를 충돌이라고 한다 충돌이 많이 일어난다면, O(1)으로 값을 탐색할 수 있는 장점이 없어진다 충돌 문제 해결책 1. Open Addressing 해시 충돌이 발생하면, 비어 있는 다..
-
기술 면접 - 자료 구조(비선형 구조)기술 면접 2021. 4. 22. 02:10
1. 트리 트리는 계층적 관계를 표현하는 자료 구조 연결리스트를 기반으로 만들어진다 노드 트리의 구성요소에 해당하는 1, 3, 6 같은 요소 간선 노드와 노드를 연결하는 선 루트 노드 트리 구조에서 최상위에 존재하는 노드 리프 노드 자식 노드가 없는 노드 내부 노드 리프 노드를 제외한 모든 노드 이진 트리와 서브 트리 루트 노드를 중심으로 두 개의 서브 트리(큰 트리에 속하는 작은 트리)로 나뉘어 진다. 또한 나뉘어진 두 서브 트리도 모두 이진 트리어야 한다. 위의 그림이 이진 트리의 예시! 트리에서는 각 층별로 숫자를 매겨서 이를 트리의 Level(레벨)이라고 한다. 레벨의 값은 0 부터 시작하고 따라서 루트 노드의 레벨은 0 이다. 그리고 트리의 최고 레벨을 가리켜 해당 트리의 height(높이)라고..
-
기술 면접 - 자료 구조 (선형 구조)기술 면접 2021. 4. 22. 02:10
자료구조란? 데이터의 표현 및 저장 방법 선형 자료구조 데이터를 선의 형태로, 나란히 혹은 일렬로 저장하는 방식 1 . 순차 리스트 배열을 기반으로 만든 리스트 논리적 저장 순서와 물리적 저장 순서가 일치함 찾고자 하는 원소의 인덱스 값만 알고 있다면 O(1)에 해당 원소로 접근할 수 있음 add 배열의 끝에 원소를 추가, 위치를 알고 있기 때문에, O(1) remove 배열의 원소를 지웠을 때, 그 뒤의 원소들을 앞으로 한 칸씩 밀어줘야 함, O(N) get 인덱스를 알고 있다면, 시작 위치 + 인덱스로 주소를 알 수 있음, O(1) Contains 어떤 원소를 가지고 있는지 확인, 모든 원소를 순서대로 찾아봐야 한다, O(N) 2. 연결 리스트 메모리의 동적 할당을 기반으로 구현된 리스트 각각의 원소..
-
기술 면접 - 디자인 패턴기술 면접 2021. 4. 21. 01:57
디자인 패턴이란? 자주 사용하는 설계 패턴을 정형화 해서 이를 유형별로 가장 최적의 방법으로 개발을 할 수 있도록 정해둔 설계 알고리즘과 유사하지만, 명확하게 정답이 있는 형태는 아니며, 프로젝트의 상황에 맞추어 적용 가능 생성 패턴 객체를 생성하는 것과 관련된 패턴으로, 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화 하고, 코드의 유연성을 높여준다 Factory Method Singleton Prototype Builder Abstract Factory 구조 패턴 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램 구조를 설계하는데 활용될 수 있는 패턴 클래스, 객체들의 구성을 통해서 더 큰 구조를 만들 수 있게 해준다 Adapter Composite Bridge Decorator Faca..