S E P H ' S
[Web] IT 기술 면접 질문 정리 (2) 본문
11. Call by Reference, Call by Value
Call by Reference : 매개 변수의 원래 주소에 값을 저장하는 방식. 클래스 객체를 인수로 전달한 경우
Call by Value : 인수로 기본 데이터 형을 사용. 주어진 값을 복사하여 처리하는 방식. 메소드 내의 처리 결과는 메소드 밖의 변수에 영향을 미치지 않는다.
12. Static의 의미
- 클래스가 로딩될 때, 메모리 공간을 할당하는데 처음 설정된 메모리 공간이 변하지 않음을 의미
- 객체를 아무리 많이 만들어도 해당 변수는 하나만 존재 (객체와 무관한 키워드)
13. Framework
- 특정 형태의 SW문제를 해결하기 위해 상호 협력하는 클래스 프레임과 인터페이스 프레임의 집합
- 특정한 틀을 만들어 놓고 거기에 살을 붙여 놓음으로써 프로그램을 만들어 작업시간을 줄여주는 것이다.
- 프레임워크는 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성된다.
- 프레임워크는 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의한다.
- 프레임워크 컴포넌트들은 재사용이 가능하다.
- 프레임워크는 좀 더 높은 수준에서 패턴을 조작한다.
* 프레임워크가 중요한 이유 : 객체지향 개발을 하게 되면서 개발자의 취향에 따라 다양한 프로그램이 나오게 되었다. 프로그램 개발에 투입되는 개발자도 점점 늘어남에 따라 전체 시스템의 통합성, 일관성이 부족하게 되었기 때문이다. 그래서 개발자의 자유를 제한하기 위해 프레임워크를 도입했다.
프레임워크가 가져아할 특징
1. 개발자들이 따라야할 가이드라인을 가진다.
2. 개발할 수 있는 범위가 정해져 있다.
3. 개발자를 위한 다양한 도구들이 지원된다.
프레임워크의 장/단점
장점 - 개발 시간을 줄일 수 있고 오류로부터 자유로울 수 있다.
단점 - 프레임워크에 너무 의존하면 개발 능력이 떨어져서 프레임워크 없이 개발하는 것이 불가능해질 수 있다.
14. Garbage Collection(가비지 콜렉션)
- 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것으로 시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터라 부른다.
15. Primitive type & Reference type
Primitive type : 변수에 값 자체를 저장
정수형 - byte, short, int, long
실수형 - float, double
문자형 - char
논리형 - boolean
* Primitive type 은 Wrapper Class를 통해 객체로 변형할 수 있다.
ex) int - Integer, char - Character(int 와 char를 제외한 Primitive type의 다른 자료형들은 맨 앞 알파벳을 대문자로 바꾸면 됨)
Reference type - 메모리상에 객체가 있는 위치를 저장
종류 - Class, Interface, Array 등
16. Wrapper Class
Primitive type으로 표현할 수 있는 간단한 데이터를 객체로 만들어야 할 경우가 있는데 그러한 기능을 지원하는 클래스
17. Spring Framework(스프링 프레임워크)
- 자바(Java) 플랫폼을 위한 오픈소스(Open Source) 애플리케이션 프레임워크(Framework)
- 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크
- 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 도구
- 자바로 된 프레임워크로 자바SE로 된 객체(POJO)를 자바EE에 의존적이지 않게 연결해주는 역할
스프링 특징 (간략)
1. 크기와 부하 측면에서 경량
2. 제어의 역해애(IoC) 이라는 기술을 통해 애플리케이션의 느슨한 결합을 도모
3. 관점지향 프로그래밍(AOP) 을 위한 풍부한 지원
4. 애플리케이션 객체의 생명 주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너라고 할 수 있다.
5. 간단한 컴포넌트로 복잡한 애플리케이션을 구성하고 설정할 수 있다.
스프링 특징 (심화)
1. 경량 컨테이너로서 자바 객체를 직접 관리
각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
2. 스프링은 POJO(Plain Of Java Object)방식의 프레임워크
일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
3. 스프링은 제어의 역해애(IoC : Inversion of Control)을 지원
컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어 필요에 따라 스프링에서 사용자의 코드를 호출한다.
4. 스프링은 의존성 주입(DI : Dependency Injection)을 지원
각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
5. 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원
트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
6. 스프링은 영속성과 관련된 다양한 서비스를 지원
iBatis나 Hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
7. 스프링은 확장성이 높음
스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.
18. Thread
Thread(쓰레드) : 프로세스 내에서 동시에 실해애되는 독립적인 실행 단위를 말함. 장점으로는 자원을 많이 사용하지 않고 구현이 쉬우며 범용성이 높다
Process(프로세스) : 운영체제에서 실행중인 하나의 프로그램(하나 이상의 쓰레드를 포함)
장점 | 단점 |
- 빠른 프로세스 생성 - 적은 메모리 사용 - 쉬운 정보 공유 |
- 교착상태에 빠질 수 있다. * 교착상태 : 다중 프로그래밍 체제에서 하나 또는 그 이상의 프로세스가 수행할 수 없는 어떤 특정시간을 기다리고 있는 상태 |
Thread와 Process 차이
여러 분야에서 '과정' 또는 '처리'라는 뜻으로 사용되는 용어로 컴퓨터 분야에서는 '실행중인 프로그램'이라는 뜻으로 쓰인다.
이 프로세스 내에서 실행되는 각각의 일을 쓰레드라고 한다. 프로세스 내에서 실행되는 세부 작업 단위로 여러 개의 스레드가 하나의 프로세스를 이루게 된다.
19. 접근 제한자 (public > protected > default > private)
public - 접근 제한이 없다. (같은 프로젝트 내에 어디서든 사용 가능)
protected - 같은 패키지 내, 다른 패키지엣서 상속 받아 자손 클래스에서 접근 가능
default - 같은 패키지 내에서만 접근 가능
private - 같은 클래스 내에서만 접근 가능
한정자 | 클래스 내부 | 동일 패키지 | 하위 클래스 | 그 외의 영역 |
public | O | O | O | O |
protected | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
20. 소켓 통신(TCP/UDP)
TCP | UDP |
- 연결형 서비스 제공 - 높은 신뢰성 보장 - 연결의 설정 (3-way handshaking) - 연결의 해제 (4-way handshaking) - 데이터의 흐름 제어, 혼잡 제어 - 전이중, 점대점 서비스(양방향 송수신 서비스) |
- 비연결형 서비스 제공 - 신뢰성이 낮음 - 데이터의 전송 순서가 바뀔 수 있음 - 데이터의 수신 여부 확인 안함 - TCP보다 전송속도가 빠름 |
21. Stack, Queue
Stack | Queue |
- LIFO(Last In First Out)의 후입선출 구조 - push() (데이터 입력), pop() (데이터 출력) - ex) 시스템 스택 : 함수의 호출과 복귀 순서는 스택의 구조를 응용하여 관리 - 역순 문자열 만들기, 수식의 괄호 검사, 수식의 후위 표기법 변환 |
- FIFO(First In First Out)의 선입선출 구조 - enQueue() (데이터 입력), deQueue() (데이터 출력) - ex) 우선순위가 같은 작업 예약(인쇄 대기열), 선입선출이 필요한 대기열(티켓 카운터) * Linear Queue(선형큐)는 메모리 재사용이 불가능. 이러한 문제점을 보완하여 Circular Queue(원형 큐)가 나옴 |
22. Singleton Design Pattern(싱글톤 디자인 패턴, 싱글톤 패턴)
- 클래스 인스턴스가 하나만 만들어지도록 하고, 그 인스턴스에 대한 전역 접근을 제공한다.
23. Database에서 Index란?
- 인덱스는 데이터베이스 분야에 있어서 테이블에 대한 동작 속도를 높여주는 자료 구조를 일컫는다.
- 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다.
- 고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다.
- 인덱스를 저장하는데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다.
- 데이터베이스에서 테이블과 클러스터에 연관되어 독립적인 저장공간을 보유하고 있는 객체(Object)이다.
- 사용자는 데이터베이스에 저장된 자료를 더욱 빠르게 조회하기 위하여 인덱스를 생성하고 사용한다.
DB에서 자료를 검색하는 두가지 방법
FTS( Full Table Scan ) : 테이블을 처음부터 끝까지 검색하는 방법
Index Scan : 인덱스를 검색하여 해당 자료의 테이블을 액세스 하는 방법.
출처 : https://hahahoho5915.tistory.com/16
'CS > 기술면접지식' 카테고리의 다른 글
[Part2. CS] - 자료구조 (2) (0) | 2021.09.15 |
---|---|
[Part2. CS] - 자료구조 (1) (0) | 2021.09.08 |
[Part1. CS] - 개발상식 (0) | 2021.09.01 |
[Web] IT 기술 면접 질문 정리 (1) (0) | 2021.06.21 |