2018 카카오 블라인드 채용 마지막 관문 오프라인 시험지

한글 번역을 보지 말고 답을 먼저 생각해보자

!!!! 오프라인 시험으로 풀어야 했던 문제들임


Q1

In computer science, a ( ) of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system. The implementation of ( ) and processes differs between operating systems, but in most cases a ( ) is a component of a process. Multiple ( ) can exist within one process, executing concurrently and sharing resources such as memory, while different processes do not share these resources. [3 점]

답 : Thread

구글번역 : 에서는 컴퓨터 과학 하는 스레드 의 실행은 독립적으로 관리 할 수있는 프로그램 명령들의 작은 시퀀스 인 스케줄러 통상의 부분이며, 오퍼레이팅 시스템 . 스레드와 프로세스 의 구현은 운영 체제마다 다르지만 대부분의 경우 스레드는 프로세스의 구성 요소입니다. 하나의 프로세스 내에 여러 스레드가 존재할 수 있으며 동시에 실행 되고 메모리 와 같은 리소스를 공유 할 수 있습니다. 다른 프로세스는 이러한 리소스를 공유하지 않습니다. 특히 프로세스의 스레드는 주어진 시간에 실행 가능 코드와 해당 변수의 값을 공유합니다.

구글번역 안구에 습기차네


Q2

In multitasking computer operating systems, a ( ) is a computer program that runs as a background process, rather than being under the direct control of an interactive user. Traditionally, the process names of a ( ) end with the letter d, for clarification that the process is, in fact, a ( ), and for differentiation between a ( ) and a normal computer program. For example, syslogd is the ( ) that implements the system logging facility, and sshd is a ( ) that serves incoming SSH connections. [5 점]

답 : Deamon

위키백과 : 멀티태스킹 운영 체제에서 데몬(daemon, 발음: 데이먼/’deɪmən/ 또는 디먼 /’dimən/[1])은 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다. 시스템 로그를 남기는 syslogd처럼 보통 데몬을 뜻하는 ‘d’를 이름 끝에 달고 있으며, 일반적으로 프로세스로 실행된다.


Q3

In computer science, a ( ) is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in such a way that memory which is no longer needed is not released. [3 점]

답 : memory leak

한글위키 : 컴퓨터 과학에서 메모리 누수(memory leak) 현상은 컴퓨터 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상이다. 할당된 메모리를 사용한 다음 반환하지 않는 것이 누적되면 메모리가 낭비된다.

특히 다음의 경우, 메모리 누수에 대하여 더 심각하고 중요하게 고려하여야 한다.

- 메모리를 할당하며 오랫동안 실행되는 프로그램(서버의 백그라운드 작업이나 임베디드 장치)
- 메모리 할당 주기가 짧은 경우(컴퓨터 그래픽의 프레임 단위 처리)
- 공유 메모리와 같이 프로그램 종료 후에도 해제되지 않는 메모리를 할당하는 경우
- 임베디드 시스템이나 휴대용 장치와 같이 사용 가능한 메모리가 제한적인 경우
- 운영 체제나 메모리 관리자의 내부
- 시스템의 신뢰성에 심각한 영향을 미치는 경우(장치 드라이버)
- 프로그램을 종료할 때 운영체제에서 메모리 해제를 수행해 주지 않는 경우.


Q4

In computing, ( ) is a computer program that takes one or more object files generated by a compiler and combines them into a single executable file, library file, or another ‘object’ file. A simpler version that writes its output directly to memory is called the loader, though loading is typically considered a separate process. [3 점]

답 : Linker

한글위키 : 링커(linker) 또는 링크 에디터(link editor)는 컴퓨터 과학에서 컴파일러가 만들어낸 하나 이상의 목적 파일을 가져와 이를 단일 실행 프로그램으로 병합하는 프로그램이다.


Q5

The ( ) is a hierarchical decentralized naming system for computers, services, or other resources connected to the Internet or a private network. It associates various information with domain names assigned to each of the participating entities. Most prominently, it translates more readily memorized domain names to the numerical IP addresses needed for locating and identifying computer services and devices with the underlying network protocols. By providing a worldwide, distributed directory service, the ( ) is an essential component of the functionality on the Internet, that has been in use since 1985. [3 점]

답 : DNS(Domain Name System)

한글위키 : 도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다. 특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해준다. 도메인 네임 시스템은 흔히 “전화번호부”에 비유된다. 인터넷 도메인 주소 체계로서 TCP/IP의 응용에서, www.example.com과 같은 주 컴퓨터의 도메인 이름을 192.168.1.0과 같은 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다.

OSI/IP 모형

  1. 응용 계층 NNTP · SIP · SSI · DNS · FTP · 고퍼 · HTTP · 텔넷 ··
  2. 표현 계층 MIME · XDR · TLS · SSL
  3. 세션 계층 지명 파이프 · 넷바이오스 · SAP
  4. 전송 계층 TCP · UDP · SCTP · DCCP
  5. 네트워크 계층 ARP · IP · ICMP · IPsec · IGMP · IPX · 애플토크
  6. 데이터 링크 계층 CSLIP · SLIP · 이더넷 · 프레임 릴레이 · ITU-T G.hn DLL · L2TP · PPP · PPTP
  7. 물리 계층 RS-232 · 이더넷 · USB · 블루투스 ···


Q6

( ) uses a simple connectionless communication model with a minimum of protocol mechanism. ( ) provides checksums for data integrity, and port numbers for addressing different functions at the source and destination of the datagram. It has no handshaking dialogues, and thus exposes the user’s program to any unreliability of the underlying network; There is no guarantee of delivery, ordering, or duplicate protection. If error- correction facilities are needed at the network interface level, an application may use the Transmission Control Protocol (TCP) or Stream Control Transmission Protocol (SCTP) which are designed for this purpose. [5 점]

답 : UDP(User Datagram Protocol)

한글위키 : 사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)은 인터넷 프로토콜 스위트의 주요 프로토콜 가운데 하나이다. 1980년에 데이빗 리드가 설계하였고, 현재 IETF의 RFC 768로 표준으로 정의되어 있으며, TCP와 함께 데이터그램으로 알려진 단문 메시지를 교환하기 위해서 사용된다. UDP는 유니버설 데이터그램 프로토콜(Universal Datagram Protocol)이라고 일컫기도 한다.

UDP의 전송 방식은 너무 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 심지어는 통보 없이 누락시키기도 한다. UDP는 일반적으로 오류의 검사와 수정이 필요 없는 애플리케이션에서 수행할 것으로 가정한다.

UDP와 TCP 비교
TCP는 데이터를 주고 받을 양단 간에 먼저 연결을 설정하고 설정된 연결을 통해 양방향으로 데이터를 전송하지만, UDP는 연결을 설정하지 않고 수신자가 데이터를 받을 준비를 확인하는 단계를 거치지 않고 단방향으로 정보를 전송한다.

- 신뢰성 : TCP는 메시지 수신을 확인하지만 UDP는 수신자가 메시지를 수신했는지 확인할 수 없다.
- 순서 정렬 : TCP에서는 메시지가 보내진 순서를 보장하기 위해 재조립하지만 UDP는 메시지 도착 순서를 예측할 수 없다.
- 부하 : TCP보다 속도가 일반적으로 빠르고 오버헤드가 적다.


Q7

( ) is a set of Web development techniques using many Web technologies on the client side to create asynchronous Web applications. With ( ), Web applications can send data to and retrieve from a server asynchronously (in the background) without interfering with the display and behavior of the existing page. By decoupling the data interchange layer from the presentation layer, ( ) allows for Web pages, and by extension Web applications, to change content dynamically without the need to reload the entire page. In practice, modern implementations commonly substitute JSON for XML due to the advantages of being native to JavaScript. [5 점]

답 : Ajax

한글위키 : Ajax 애플리케이션은 필요한 데이터만을 웹서버에 요청해서 받은 후 클라이언트에서 데이터에 대한 처리를 할 수 있다. 보통 SOAP이나 XML 기반의 웹 서비스 프로토콜이 사용되며, 웹 서버의 응답을 처리하기 위해 클라이언트 쪽에서는 자바스크립트를 쓴다. 웹 서버에서 전적으로 처리되던 데이터 처리의 일부분이 클라이언트 쪽에서 처리 되므로 웹 브라우저와 웹 서버 사이에 교환되는 데이터량과 웹서버의 데이터 처리량도 줄어들기 때문에 애플리케이션의 응답성이 좋아진다. 또한 웹서버의 데이터 처리에 대한 부하를 줄여주는 일이 요청을 주는 수많은 컴퓨터에 대해서 일어나기 때문에 전체적인 웹 서버 처리량도 줄어들게 된다.


Q8

A ( ) in the C programming language (and many derivatives) is a composite data type declaration that defines a physically grouped list of variables to be placed under one name in a block of memory, allowing the different variables to be accessed via a single pointer, or the ( ) declared name which returns the same address. In the C++ language, a ( ) is identical to a C++ class but a difference in the default visibility exists: class members are by default private, whereas ( ) members are by default public. [5 점]

답 : struct

한글위키 : C/C++ 프로그래밍 언어에서 구조화 된 데이터를 처리할 때 struct를 사용하는데 이를 구조체라고 한다. 구조화되었다는 말은 의미가 연결되어 한 덩어리로 처리하는 방식을 말한다. 관련된 컴퓨터 용어로 보면 record 그리고 Object와 비슷한 개념이다. 그리고 자료처리와 연관하여 데이터 구조와 연관이 되어 있다.

https://ko.wikipedia.org/wiki/Struct 참고하삼


Q9

In object-oriented programming, () is when an object or class is based on another object (prototypal ()) or class (class-based ()), using the same implementation. Inheritance in most class-based object-oriented languages is a mechanism in which one object acquires all the properties and behaviours of the parent object. [5점]

답 : Inheritance

한글위키 : 객체 지향 프로그래밍(OOP)에서, 상속(inheritance)은 객체들 간의 관계를 구축하는 방법이다. 클래스로 객체가 정의되는 고전 상속에서, 클래스는 기반 클래스, 수퍼클래스, 또는 부모 클래스 등의 기존의 클래스로부터 속성과 동작을 상속받을 수 있다. 그 결과로 생기는 클래스를 파생 클래스, 서브클래스, 또는 자식 클래스라고 한다. 상속을 통한 클래스들의 관계는 계층을 형성한다. 프로토타입 기반 프로그래밍에서는, 객체가 클래스를 따로 정의할 필요 없이 다른 객체로부터 직접 정의될 수 있다. 이러한 특징을 차등 상속이라고 부른다.


Q10

A ( ) symbolizes a unit of work performed within a database management system (or similar system) against a database, and treated in a coherent and reliable way independent of other ( ). A ( ) generally represents any change in a database. ( ) in a database environment have two main purposes: [5 점]

  1. To provide reliable units of work that allow correct recovery from failures and keep a database consistent even in cases of system failure, when execution stops (completely or partially) and many operations upon a database remain uncompleted, with unclear status.
  2. To provide isolation between programs accessing a database concurrently. If this isolation is not provided, the programs’ outcomes are possibly erroneous.

답 : transaction

한글위키 : 트랜잭션(transaction)은 ATM, 데이터베이스 등의 시스템에서 사용되는 쪼갤 수 없는 업무처리의 단위이다.

영어 낱말 transaction은 거래를 뜻한다. 예를 들어 돈을 줬는데 물건을 받지 못한다면, 그 거래는 이루어지지 못하고 원상태로 복구되어야 한다. 이와 같이 쪼갤 수 없는 하나의 처리 행위를 원자적 행위라고 한다. 여기서 쪼갤 수 없다는 말의 의미는 실제로 쪼갤 수 없다기보다는 만일 쪼개질 경우 시스템에 심각한 오류를 초래할 수 있다는 것이다. 이러한 개념의 기능을 ATM 또는 데이터베이스 등의 시스템에서 제공하는 것이 바로 트랜잭션이다.

트랜잭션은 사용자가 시스템에 요구를 시작하여 시스템 내의 처리, 시스템에서 사용자에게 응답하는 모든 처리를 포함한다. 이러한 트랜잭션이 충족해야 하는 기술적인 요건은 ACID가 있다.

  1. 원자성 : 트랜잭션의 처리는 완전히 끝마치지 않았을 경우에는 전혀 이루어지지 않은 것과 같아야 한다.
  2. 일관성 : 트랜잭션들간의 영향이 한 방향으로만 전달되어야 한다.
  3. 고립성 : 트랜잭션의 부분적인 상태를 다른 트랜잭션에 제공해서는 안된다.
  4. 지속성 : 성공적인 트랜잭션의 수행 후에는 반드시 데이터베이스에 반영되어야 한다.

끗. 나머지 Q11 - Q20 은 알고리즘(시간복잡도), 자료구조 포스트에서 정리하면 될 것같다.