기술면접 질문들과 답변들
*링크 클릭하면 답 정리(keyword version, ~습니다체 모두)되어 있음
1) 신입공채 기술면접 방식
-CS 기본지식이 초점!
-코딩테스트 중요
2) 신입상시채용 기술면접 방식
-팀에서 쓰는 해당 스택과 관련된 프로젝트 경험이 있는지?
-CS 기본지식은 갖춰져 있는지?
3) 경력직 기술면접 방식
-소프트웨어 공학, 언어 고급 문법, 디자인패턴, 솔루션 아키텍쳐, SQL 구현
-객체지향적 설계능력, 코드재활용의 장단점, 적절한 디자인패턴 응용, 아키텍쳐 설계 능력, 클래스간 구조정의, 테스트 케이스 작성, 업무 이해력, 간결한 코드의 중요성
Contents. -자료구조/알고리즘(Data Structure / Algorithm) feat. 손코딩 -데이터베이스(DB) -운영체제(OS) -네트워크(Network) -Python 언어 -JAVA 언어, OOP (+디자인패턴) -웹 개발 -Artificial Intelligence -코딩테스트(유사기출) -기술 외 받았던 질문들 |
자료구조/알고리즘(Data Structure / Algorithm) feat. 손코딩
스택, 큐, 배열, linked list
Q. stack / queue 차이
Q. array / linked list 차이
Q. stack / tree / queue / heap 개념
Q. priority queue란?
Q. 스택/큐 차이
Q. 스택 삽입(push)/삭제(pop) 함수 배열/링크드리스트로 구현
Q. 큐 삽입(enqueue)/삭제(dequeue) 함수 배열/링크드리스트로 구현
Q. 계산기 구현해라. 곱셈, 나눗은 먼저 처리하고, 괄호까지 적용해라.
Q. (한 개로 세 개) 배열 한 개로 스택 세 개를 어떻게 구현할지 설명하라.
Q. (스택으로 큐) 스택 두 개로 큐 하나를 구현한 MyQueue 클래스를 구현하라.
Q. (스택 Min) 기본적인 push와 pop 기능이 구현된 스택에서 최솟값을 반환하는 min 함수를 추가하려고 한다. 어떻게 설계할 수 있겠는가? push, pop, min 연산은 모두 O(1) 시간에 동작해야 한다.
트리
Q. 트리란 무엇인가?
Q. Tree / Binary Tree 차이
Q. Binary Tree / Binary Search Tree 차이
Q. full binary tree / complete binary tree / perfect binary tree 차이
Q. BST의 time complexity?
Q. BST의 word time complexity는? worst case는 어떤 경우에 발생하는가?
Q. B tree란 무엇이고, 어디에 자주 사용되는지?
Q. B tree / B+ tree 차이
Q. Binary Search Tree / heap 차이
Q. 다음 최대 힙에 원소(30)을 삽입하는 과정은?
21
/ |
15 20
/ | /
14 10 2
Q. 다음 최소 힙에서 삭제를 하는 과정은?
1
/ |
4 2
/ | / |
7 5 3 3
/ | /
7 8 9
Q. 최대 힙이 그려져 있고, 해당 최대 힙에 대해 삽입과 삭제가 어떻게 진행되는지 설명해라. 또, 이를 수도 코드로 구현하면?
Q. 최소 힙이 그려져 있고, 해당 최소 힙에 대해 삽입과 삭제가 어떻게 진행되는지 설명해라. 또, 이를 수도 코드로 구현하면?
Q. 우선순위 큐 구현하면?
Q. (균형 확인) 이진 트리가 균형 잡혀있는지 확인하는 함수를 작성하라. 이 문제에서 균형 잡힌 트리란 모든 노드에 대해서 왼쪽 부분 트리의 높이와 오른쪽 부분 트리의 높이의 차이가 최대 하나인 트리를 의미한다.
Q. 최소 힙에서 어떻게 최솟값을 제거할까?
Q. (BST 검증) 주어진 이진 트리가 이진 탐색 트리인지 확인하는 함수를 작성하라.
Q. (최소 트리) 오름차순으로 정렬된 배열이 있다. 이 배열 안에 들어 있는 원소는 정수이며 중복된 값이 없다고 했을 때 높이가 최소가 되는 이진 탐색 트리를 만드는 알고리즘을 작성하라.
Q. 이진 트리를 좌우 반전시키면?
그래프
Q. 그래프란 무엇인가?
Q. 트리 / 그래프 차이
Q. dfs / bfs 차이
Q. 그래프를 인접리스트 / 인접행렬 구현 시 차이, 장단점, 쓰이는 상황
Q. 다익스트라 알고리즘 / 벨만 포드 알고리즘 / 플로이드 알고리즘 차이, 쓰이는 상황
Q. tree traversal 4가지 방식
Q. MST란?
Q. MST를 구하는 방식 2가지 방식과 각각의 차이
Q. 크루스칼 알고리즘 작동방식
Q. 위상 정렬이란?
Q. 위상 정렬을 구현하는 방식을 설명하시오
Q. 그래프가 순환하는지 아닌지 판단하는 방법
Q. 다익스트라 알고리즘의 time complexity, space complexity
Q. 다익스트라 알고리즘 구현 & 각 부분별 time complexity, space complexity 설명
Q. 최단 거리를 만드는 모든 최단 경로를 출력하려면?
해시
Q. hash란?
Q. hash table이란?
Q. hash 충돌이란?
Q. 해시테이블에서 해시 충돌을 회피하는 2가지 기법
정렬 알고리즘
Q. Bubble sort / Selection sort / Insertion sort / Merge sort / Heap sort / Quick sort / Count sort / Radix sort 의 space complexity, average time complexity, worst time complexity를 구하시오.
Q. 퀵 vs 머지 vs 힙 정렬 차이
Q. Quick sort가 최악의 성능을 내는 경우와, 그 때의 시간복잡도는?
Q. bubble sort 손코딩
Q. quick sort 손코딩
Q. quick sort, merge sort, bubble sort에 대해 수도코드를 구현하고, 작동 원리 설명. 최선/최악 시간 복잡도와 공간복잡도는? 또, 최악의 경우를 개선시킬 수 있는 방법은?
재귀
Q. 재귀란?
Q. 재귀로 '하노이탑' 구현
Q. 재귀로 '피보나치 수열' 구현
Q. 재귀로 '최소공배수' 구현
기타
Q. 팩토리얼 구현
Q. 소수 구하는 함수 구현
Q. n개의 배열에서 k(k<=n) 번째로 큰수(작은 수)를 찾는 효과적인 방법?
Q. 값이 같은 원소가 없고 정렬되어 있는 배열X에서 X[i] = i 인 값을 찾는 가장 효율적인 방법은?
데이터베이스(DB)
Q. 데이터베이스가 일반 파일 시스템과 비교해서 가지는 차이점과 데이터를 저장할 때 파일에 저장하지 않고 데이터베이스를 사용하는 이유를 말해보세요 <윈터코딩 전화면접, 00 면접>
Q. 데이터베이스의 특징
Q. 트랜잭션이 무엇인지(정의)
Q. 트랜잭션의 특성(ACID)
Q. BASE 속성
Q. 트랜잭션의 격리수준 (isolation level)
Q. 데이터베이스의 이상현상(Anormaly, 3가지)
Q. 정규화 정의/목적/장단점 (1차 정규화, 2차 정규화, 3차 정규화, 4차 정규화)
Q. (비정규화) 비정규화(DENORMALIZATION)란 무엇인가? 그 장단점을 설명하라.
Q. NoSQL / RDBMS 차이, 장단점, 각각 언제 사용하면 좋은지?
Q. index 정의/장단점/자료구조
Q. DB Index 트리 구조 설명 (b-tree, b+ tree)
Q. 클러스터링 인덱스란?
Q. clustering / non-clustering 인덱스 차이
Q. 힌트(hINT)란?
Q. trigger / procedure 차이
Q. select문의 문법순서와 실행순서
Q. primary key / foreign key 차이
Q. INNER JOIN과 LEFT JOIN의 차이는?
Q. INNER JOIN과 OUTER JOIN의 차이는?
Q. INNER JOIN / LEFT JOIN / OUTER JOIN에서 JOIN 기준이 되는 컬럼에 NULL이 있다면?
Q. SELF JOIN은 어떤 경우에 쓰는가?
Q. UNION ALL과 OUTER JOIN의 차이는?
Q. (JOIN) 서로 다른 종류의 JOIN은 어떤 것들이 있는가? 각각 어떻게 다르고, 어떤 상황에서 어떤 JOIN과 어울리는지 설명하라.
Q. DB 성능을 어떻게 측정할 수 있는지?
Q. 트랜잭션을 병행으로 처리할 때의 문제점
Q. 100억 개의 URL이 있다. 중복된 문서를 찾으려면 어떻게 해야 하는가? 여기서 중복이란 같은 URL이라는 뜻이다.
Q. 100(만) 유저가 사용하는 db는 어떻게 만들 건가?
Q. 1000만 명의 유저를 갖고 있는 쇼핑몰을 구현하려고 한다. DB는 어떻게 설계해야할까?
Q. (개체-관계 다이어그램) 회사, 사람, 직원으로 구성된 데이터베이스의 ER(entity-relationship) 다이어그램을 그리라.
Q. (성적 데이터베이스 설계) 학생들의 성적을 저장하는 간단한 데이터베이스를 생각해 보자. 이 데이터베이스를 설계하고, 성적이 우수한 학생(상위 10%) 목록을 반환하는 SQL 질의문을 작성하라. 단, 학생 목록은 평균 성적에 따라 내림차순으로 정렬되어야 한다.
운영체제(OS)
Q. 프로세스 / 스레드 차이
Q. 싱글 스레드 / 멀티스레드 차이
Q. 멀티스레드 / 멀티프로세스 차이
Q. 멀티스레드의 장단점
Q. mutex / semaphore 차이
Q. 데드락
Q. CPU 스케줄링 (FCFS, SJF, SRTF, Priority Scheduling, Round Robin 등)
Q. Thread-safe란?
Q. Thread-safe하게 만들려면?
(안 중요함) Q. 운영체제란?
(안 중요함) Q. 운영체제의 역할/기능
(안 중요함) Q. 운영체제의 목적?
Q. 동기 / 비동기 차이
Q. 캐시란?
Q. 페이지 교체 알고리즘? (FIFO, OPR, LRU, LFU, MFU 등)
Q. 리눅스 써봤냐?
Q. 유닉스 써봤냐?
네트워크(Network)
Q. OSI 5계층 (또는 7계층)
Q. OSI 계층 나눈 이유?
Q. HTTP, TCP, UDP, IP를 각각 설명해라. 어떤 계층인지, 어떤 프로토콜인지 등을 비교하면서 설명하라.
Q. TCP / UDP 차이
Q. TCP가 어떻게 신뢰성을 보장하는지 설명해라.
Q. 3-way handshaking / 4-way handshaking 비교해 설명해라.
Q. 클라이언트-서버 통신할 때 왜 3-way handsahking, not 2-way?
Q. 왜 4-way, not 3-way?
Q. 대칭키
Q. (웹 동작방식) 웹 브라우저에 url을 입력했을 때 일어나는 현상 아는대로 설명하라.
Q. HTTP통신 / 소켓통신 비교
Q. http란?
Q. HTTP/1.x와 HTTP/2의 차이
Q. http / https 차이
Q. SSL
Q. DNS 서버란?
Q. DNS 서버를 만드는 이유?
Q. DNS 서버를 centralize하게 만들지 않는 이유? 왜 서버를 분산시키는지?
Q. get / post 차이
Q. ipv4 / ipv6 차이
Q. CDN이란?
Q. 캐싱이란? (CDN, DNS 등 캐싱 이용 사례들?)
Q. 파이프라인 오류 회복 방법 (go-back-n, selective repeat)
Q. 분산서버를 만드는 이유
Q. 프록시서버를 만들면 좋은 이유
Q. (대용량 트래픽 시스템 설계) 1000만 명이 사용하는 시스템을 만들 때 어떻게 개발해야할까?
Q. scale-up / scale-out 차이
Q. load balancing이란? load balancing이 왜 필요한지?
Q. load balancing 알고리즘
Q. L4 로드밸런서 / L7 로드밸런서 차이
Q. flow control 정의와 방식 (stop and wait, 슬라이딩 윈도우 기법)
Q. congestion control 정의와 방식 (slow start, fast recovery)
Q. reliabilty 보장 방법 (패킷 중간에 손실 됐을 때 how?)
Q. 목적지가 같은 네트워크인 경우 패킷이 목적지까지 도착하는 방법?
Q. 스위치 / 라우터 차이
Q. 브로드캐스팅이란?
Q. 라우터 / 게이트웨이 차이
Q. 서브네팅과 서브넷 마스크
Q. 서브넷 마스크를 사용하는 이유
Q. VPN / 프록시 서버 차이
Q. NAT가 무엇이고 문제점은 뭔지?
Q. NAT의 장단점
Q. NAPT란?
Python 언어
Q. Python에서 list append()와 extend()의 차이
JAVA 언어, OOP (+디자인패턴)
Q. HashTable / HashMap 차이
Q. HashMap / TreeMap 차이
Q. 객체지향의 특징 - 캡슐화, 다형성, 추상화, 상속
Q. 오버라이딩 / 오버로딩 차이
Q. 싱글톤
컴퓨터아키텍처
개발방법론
웹 개발
REST API
Q. rest api란?
Q. rest api 이용해 프로젝트해 본 경험? 거기서 해당 메소드의 역할과 특징?
Spring
Q. Spring Bean이란 무엇인가요?
Q. Spring Bean의 Scope에 대해서 설명해주세요
Q. DI의 종류는 어떤 것이 있고, 이들의 차이는 무엇인가요?
Q. Autowiring 과정에 대해서 설명해주세요
Q. Bean/Component 애노테이션에 대해서 설명해주시고, 둘의 차이점에 대해서 설명해주세요
Q. 의존성과 설정값을 생성자 인자로 주입해야하는 이유에 대해 설명해주세요
JPA
Q. JPA의 영속성 컨텍스트의 이점(5가지)를 설명해주세요
Q. JPA를 쓴다면 그 이유에 대해 설명해주세요
Q. N+1 문제가 발생하는 이유와 이를 해결하는 방법을 설명해주세요
Artificial Intelligence
-패키지
-기초 수학
-one hot encoding
Q. One Hot Encoding을 해야 하는 이유는?
-optimization
Q. 등고선이 굉장히 꼬여 있는 skewed된 상황에서 각 optimizer는 어떤 성능을 보이는가?
-모델 평가
Q. train, test, validation data의 차이?
-논문 사이트 sohyunwriter.tistory.com/59?category=892943
코딩테스트(유사기출, 완전 똑같X)
카카오 2019 블라인드 공채 오프라인 2차 코딩테스트 (제한시간: 5시간)
기술 외 받았던 질문들
Q. 우리 회사의 장단점?
Q. 다른 회사 썼는지? 어디 썼는지?
Q. 퇴사 이유?
Q. 이직하려는 이유?
Q. 컴공 복수전공 이유? (타과를 복수전공했을 경우 복수전공 이유 질문 多)
Q. 자소서를 기술로 가득 채웠는데 국문과는 아예 생각 안 살리는 건지? 살릴 수 있다면 어떻게 살릴 수 있는지?
Q. 커리어로드맵?
Q. 친구들이 보는 장점/단점? 친구들한테 자주 듣는 말?
Q. 친한 친구 이름 5명
-참고문헌
@sohyunwriter
'Computer Science' 카테고리의 다른 글
[정보처리기사 실기] 4. 서버 프로그램 구현 (0) | 2021.07.15 |
---|---|
[정보처리기사 실기] 12. 제품소프트웨어 패키징 (0) | 2021.07.13 |
정보처리기사 실기 기출 문제 (2020년 1회~2021년 1회) (0) | 2021.07.12 |
2021년 2회차 정보처리기사 실기 문제/답안 복기 (2021.07.10 시행) (0) | 2021.07.10 |
[git] pull request 하는 방식 2가지: write 권한이 있을 때 / 없을 때 (0) | 2021.06.09 |