면접 기출 Flashcards

1
Q

데드락의 정의와 데드락을 해결하는 방법에 대해 설명해보세요 - 2018 하반기 컴투스 1차 면접

A

교착 상태(膠着狀態, 영어: deadlock)란 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다.

해결하는 방법에는 예방, 회피, 발견이 있다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

가상메모리의 정의와, 가상 메모리의 주소 체계에 대해 설명해보세요 - 2018 하반기 컴투스 1차 면접

A

가상 메모리는 RAM을 관리하는 방법의 하나로, 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식을 말한다.

이러한 방식은 멀티태스킹 운영 체제에서 흔히 사용되며, 실제 주기억장치보다 큰 메모리 영역을 제공하는 방법으로도 사용된다.

가상적으로 주어진 주소를 가상 주소(virtual address) 또는 논리 주소(logical address) 라고 하며, 실제 메모리 상에서 유효한 주소를 물리 주소(physical address) 또는 실주소(real address)라고 한다. 가상 주소의 범위를 가상 주소 공간, 물리 주소의 범위를 물리 주소 공간이라고 한다.

가상 주소 공간은 메모리 관리 장치(MMU)에 의해서 물리 주소로 변환된다. 이 덕분에 프로그래머는 가상 주소 공간상에서 프로그램을 짜게 되어 프로그램이나 데이터가 주메모리상에 어떻게 존재하는지를 의식할 필요가 없어진다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

캐시 메모리의 정의와, 캐시메모리를 이용해 프로그램의 성능을 향상시키는 법에 대해 말해보세요.- 2018 하반기 컴투스 1차 면접

A

컴퓨터 시스템의 성능을 향상시키기 위해 주로 CPU 칩 안에 포함되는 빠르고 작고 매우 비싼 메모리[1]이다. 프로그램에서 직접적으로 읽거나 쓸 수 없고 하드웨어의 메모리 관리 시스템이 내부적으로 제어한다. 대부분 프로그램은 한번 사용한 데이터를 다시 사용할 가능성이 높고, 그 주변의 데이터도 곧 사용할 가능성이 높은 데이터 지역성을 가지고 있다. 데이터 지역성을 활용하여 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하면 시스템 성능을 향상시킬 수 있다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

웹서버와 소켓 서버의 차이가 무엇인지, 게임 개발에서 웹서버와 소켓 서버를 어느 상황에 사용해야 하는지 말해보세요 -2018 하반기 컴투스 1차 면접

A

웹서버는 응용 계층의 HTTP 프로토콜, 소켓 서버는 트랜스포트 계층의 TCP 프로토콜을 사용한다. HTTP 프로토콜은 이전의 통신을 기억하지 않는 state-less 통신이다. 데이터를 저장하는 위주의 통신은 웹서버, 빠른 반응을 보여줘야 하는 서버는 소켓으로 짜는게 좋다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

중간에 요소가 삭제, 삽입될 경우가 잦을 때 가장 적합한 STL은 무엇인가? - 2018 하반기 컴투스 필기

A

List

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

다음 함수를 다양한 타입이나 클래스에 작동할 수 있도록, C++ 템플릿 기능을 이용해 바꾸어라(정확히 뭐였는진 기억 안나지만 간단한 함수였음. swap 같은거 하면 될듯) - 2018 하반기 컴투스 필기

A

template

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

STL 벡터를 쓰기 부적절한 상황은 무엇인가? - 2018 하반기 컴투스 면접

A

중간에 삽입 삭제가 잦다면 쓰면 안 된다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

stack과 queue 를 하나의 자료구조로 구현한다고 하자. 매우 큰 입력에 대처할 수 있으면서 가장 빠르게 동작하는 자료구조는 무엇인가?

  1. 배열 2. 연결리스트 3. 해쉬테이블 4. B 트리 5. 그래프
    - 2018 하반기 NHN 필기
A
  1. 연결리스트
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

TCP, IP, 이더넷은 각각 어떤 계층인가?

  • 2018 하반기 NHN 필기
A

트랜스포트, 네트워크, 링크

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

가비지 컬렉션의 정의와, 구현 방식별 장단점을 적어라 - 2018 하반기 라인플러스 필기

A

가비지 컬렉션은 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다.

쓰레기 수집이 지원되는 환경에서는 프로그래머가 동적으로 할당한 메모리 영역의 전체를 완벽하게 관리할 필요가 없어진다. 쓰레기 수집은 다음과 같은 버그를 줄이거나 완전히 막을 수 있다.

유효하지 않은 포인터 접근: 이미 해제된 메모리에 접근하는 버그를 가리킨다. 만약 이 포인터가 해제되고 새로운 값이 할당되었다면, 잘못된 값을 읽어오게 된다.

이중 해제: 이미 해제된 메모리를 또다시 해제하는 버그를 가리킨다. 일부 메모리 할당 알고리즘에서는, 해제된 메모리를 다시 해제하려고 시도하는 것은 오류를 일으킬 수 있다.

메모리 누수: 더이상 필요하지 않은 메모리가 해제되지 않고 남아있는 버그를 가리킨다. 메모리 누수가 반복되면 메모리 고갈로 프로그램이 중단될 수 있다. (접근 가능한 메모리가 증가하여 메모리가 고갈되는 문제는 쓰레기 수집으로도 막을 수 없다)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

가비지 컬렉션의 구현 방법과, 각각의 장단점을 적어라 - 2018 하반기 라인 플러스 필기

A

추적 방식, 레퍼런스 카운팅 방식

장단점 못 찾음

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

스마트 포인터가 무엇인지, 코딩을 전혀 모르는 사람에게 설명해보세요. - 2018 넷마블 하반기

A

C++ 프로그램에서 new 키워드를 사용하여 동적으로 할당받은 메모리는, 반드시 delete 키워드를 사용하여 해제해야 합니다.

C++에서는 메모리 누수(memory leak)로부터 프로그램의 안전성을 보장하기 위해 스마트 포인터를 제공하고 있습니다.

스마트 포인터(smart pointer)란 포인터처럼 동작하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해 줍니다.

(비유를 이용해서 더 쉽게 설명해야 함)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

자바의 String, StringBuffer, StringBuilder의 차이 - 2016년 배달의 민족 (출처:https://java.ihoney.pe.kr/416)

A

String과 (StringBuffer, StringBuilder)의 차이점은 String은 immutable(불변)하고 StringBuffer, StringBuilder는 mutable(가변)하다는 점이다.

쉽게 말해서 String은 new 연산을 통해 생성되면 그 인스턴스의 메모리 공간은 절대 변하지 않는다.

그래서 + 연산이나 concat을 이용해서 문자열에 변화를 줘도 메모리 공간이 변하는 것이 아니라 새로운 String객체를 new로 만들어서 새로운 메모리 공간을 만드는 것이다.

이렇게 새로운 문자열이 만들어지면 기존의 문자열은 가비지 콜렉터에 의해 제거되야 하는 단점(언제 제거될지 모름)이 있다.

또한 이러한 문자열 연산이 많아질 때 계속해서 객체를 만드는 오버헤드가 발생하므로 성능이 떨어질 수 밖에 없는 단점이 있다. (+연산에 내부적으로 char배열을 사용함)

대신 String 클래스의 객체는 불변하기 때문에 단순하게 읽어가는 조회연산에서는 타 클래스보다 빠르게 읽을 수 있는 장점이 있다. (+불변하기 때문에 멀티쓰레드환경에서 동기화를 신경쓸 필요가 없음(장점))

결론 => String 클래스는 문자열 연산이 적고 조회가 많을 때 멀티쓰레드 환경에서 사용하면 좋음.

StringBuffer와 StringBuilder 클래스는 String과 다르게 mutable(변경가능)하다. 즉 문자열 연산에 있어서 클래스를 한번만 만들고(new), 연산이 필요할 때 크기를 변경시켜서 문자열을 변경한다.

그러므로 문자열 연산이 자주 있을 때 사용하면 성능이 좋다!

심지어 StringBuffer와 StringBuilder 클래스의 메서드들이 같으므로 호환(?)이 가능하다.

그렇다면 StringBuffer와 StringBuilder의 차이는 무엇일까?

차이점은 StringBuffer는 멀티쓰레드환경에서 synchronized키워드가 가능하므로 동기화가 가능하다. 즉, thread-safe하다.

StringBuilder는 동기화를 지원하지 않기 때문에 멀티쓰레드환경에서는 적합하지 않다.

대신 StringBuilder가 동기화를 고려하지 않기 때문에 싱글쓰레드 환경에서 StringBuffer에 비해 연산처리가 빠르다.

결론 => 문자열 연산이 많을 때 멀티쓰레드환경에서는 StringBuffer, 싱글쓰레드또는 쓰레드를 신경쓰지 않아도 되는 환경에서는 StringBuilder를 사용하는 것이 적절하다.

출처: https://jeong-pro.tistory.com/85 [기본기를 쌓는 정아마추어 코딩블로그]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

왜 다형성을 가진 C++ 클래스의 소멸자에는 virtual 키워드를 붙일까? -연도, 기업 미상

출처: http://makefortune2.tistory.com/243?category=695910 [Simple in Complex with Simple]

A

자식 클래스의 소멸자가 실행되지 않아 메모리 누수의 원인이 된다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

new 와 malloc의 차이는 무엇인가? -연도 미상, 엔씨소프트(추정)

A

new는 연산자, malloc은 함수이다. malloc은 생성자를 실행하지 않는다.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

malloc() calloc() realloc()에 대해서 말해보고 realloc()시 발생할 수 있는 문제점에 대해서 언급하라 - 연도 미상, 엔씨소프트(추정)

출처: http://makefortune2.tistory.com/246?category=695910 [Simple in Complex with Simple]

A

calloc은 동적 할당한 공간을 모두 0으로 초기화 한다. realloc은 기존에 할당한 메모리 공간에, 추가로 공간을
할당하는 함수이다.

realloc()의 대표적 문제는 정말 혹시나 메모리 할당이 실패할 경우 null이 반환되기 때문에 기존의 메모리가 할당되어 있는 포인터를 잃어버리는 것이다.

17
Q

c++의 초기화 방법에 대해 논하시오 - 연도 미상, 엔씨소프트(추정)

출처: http://makefortune2.tistory.com/246?category=695910

A

초기화 리스트를 사용한다. (대입과는 다름)

18
Q

컨텍스트 스위칭의 정의 - 블루홀 필기, 2018 하반기

A

문맥 교환(Context Switch)이란 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다. 한 프로세스의 문맥은 그 프로세스의 프로세스 제어 블록에 기록되어 있다.

19
Q

해싱의 정의, 장점, 충돌의 의미, 충돌의 해결 방법 - 블루홀 면접, 2018 하반기

A

해시 테이블(hash table), 해시 맵(hash map), 해시 표는 컴퓨팅에서 키를 값에 매핑할 수 있는 구조인, 연관 배열 추가에 사용되는 자료 구조이다.

해시 충돌이란 해시 함수가 서로 다른 두 개의 입력값에 대해 동일한 출력값을 내는 상황을 의미한다. 해결 방법에는 개방주소법과 체이닝이 있다.

20
Q

코드, 데이터, 스택, 힙 영역에 대해 설명하세요 - 블루홀 면접, 2018 하반기

A

코드 : 코드의 영역
데이터: 전역변수의 영역
스택: 지역변수의 영역
힙: 동적할당한 변수의 영역

21
Q

도메인을 입력하고 페이지가 열리는데까지 서버에서 어떤 일을 하는지? -라인플러스 기출, 출처:잡플래닛

A

미완

22
Q

어떤 때에 Java에서 생성자를 Private로 설정하는가? -라인플러스 기출, 출처: 잡코리아

A

미완

23
Q

Java Garbage Collection에 대해 아는대로 말해보라. -라인플러스 기출, 출처:잡코리아

A

미완

24
Q

3G망과 와이파이 망의 다른 점은 무엇인가? - 라인플러스 기출, 잡코리아

A

미완

25
Q

퀵소트와 머지소트를 설명해보시오 - 라인플러스 기출, 출처: 잡플래닛

A

미완

26
Q

인덱스란? - 라인플러스 기출, 출처:잡플래닛

A

미완

27
Q

4 handshake, 3 handshade 의 차이 -라인플러스 기출, 출처: 잡플래닛

A

미완

28
Q

좋은 API가 뭐라고 생각하시나요? -라인플러스 기출, 출처: 잡플래닛

A

딱히 정답이 없는 문제. API가 뭔지는 알아야 할듯.

29
Q

memcpy와 memmove의 차이

A

memmove는 복사시 별도의 버퍼를 사용하며 memcpy는 사용하지 않는다.

memcpy는 복사하려는 범위와 원본의 범위가 overlap 될 경우 정상 작동 여부를 보장할 수 없다. (behavior is undifined) memmove는 괜찮다.

30
Q

세션과 쿠키의 차이점을 설명해라- 라인플러스 기출, 출처: 잡플래닛

A

쿠키와 세션 모두 stateless한 http 프로토콜의 단점을 보완하기 위해 만들었다. 이전 접속 정보를 저장한다.

쿠키는 브라우저에, 세션은 서버에 저장된다.

https://interconnection.tistory.com/74

31
Q

GET과 POST 방식의 차이점과 각각 어떤 경우에 사용하는 것이 적당한지 - 라인플러스 기출, 출처:잡플래닛

A

미완

32
Q

realloc이 OS에서 어떻게 동작하는지 아는가? - 라인플러스 기출, 출처:잡플래닛

A

미완

33
Q

DDL과 DML에 대해 설명하라 - 라인플러스 기출, 출처:잡플래닛

A

데이터 정의 언어

데이터 조작 언어

34
Q

공이 9개 있다. 무게가 가벼운 공 하나를 찾는데 최소한의 횟수. - 라인플러스 기출, 출처:잡플래닛

A

이진탐색 쓰면 될듯

35
Q

엔티티와 릴레이션이 무엇인가?- 라인플러스 기출, 출처:잡플래닛

A

필드, 테이블

36
Q

Fetch Decode Execute의 CPU의 Instruction 처리 과정을 설명- 라인플러스 기출, 출처:잡플래닛

A

미완

37
Q

Linked List와 Array 차이. - 라인플러스 기출, 출처:잡플래닛

A

링크드 리스트: 순차 접근해야함. 중간 삽입 삭제 유리

배열: 랜덤 접근 가능, 중간 삽입 삭제 불리

38
Q

Java와 Java Script차이

A

공통점이 없음