면접 대비 멘토링
국내 IT 서비스 회사 면접 준비, CS편
이런 질문은 자주 나오네?
어디까지 답변해야할까? 또는 상대적으로 남들이 준비하는 것보다 여기까지
손코딩을 준비하자
어떤 것을 공부할까?
운영체제, 자료구조, 알고리즘, 네트워크, 데이터베이스
🍎 운영체제
가장 빈번하게
- Thread vs Process
- 프로세스를 공장에 비유한다면 공장의 일꾼을 쓰레드에 비유할 수 있다.
- 쓰레드는 고유한 스택을 가지며 다른 자원은 프로세스에서 공유한다. 그리고 컨텍스트 스위칭이 빠르다.
- 프로세스
- 메모리 구조 → 코드, 스택, 힙
- IPC를 통해 프로세스 간의 자원 공유가 가능하다.
- Cache?
- 주기억장치에서 빈번하게 조회하는 데이터를 cache에 보관하여 조회 효율을 높인다.
- locality, hit rate
- cache의 효율을 극대화하기 위한 지표
- locality
- Deadlock?
- 둘 이상의 프로세스가 점유 중인 자원을 서로 기다리면서 무한 대기에 빠지는 상태
- 발생조건 4가지
- 해결방법 4가지
- 페이지 교체 알고리즘
- LRU, Least Recently Used
- 실제로 구현해보자
- counter
- double linked list
- 실제로 구현해보자
- LRU, Least Recently Used
🍎 자료구조
시간복잡도와 구현을 할 수 있냐
- stack 2개로 queue를 구현해봐
- A stack를 모두 B stack에 pop하고 push
- 단일 연결 리스트 vs 원형 연결 리스트
- 끝 노드의 다음 값이 null이면 단일, 아니면 원형
- 트리 순회
- 전위, 중위, 후위
- ArrayList vs LinkedList
- 조회
- Array → O(1), Linked → O(N) (최악의 경우)
- 삭제
- Array → O(N), Linked → O(1)
- 조회
- Hash 충돌
- 서로 다른 key값에 value가 같은 현상
- 해결방법
- Hash Map vs Hash Table
- Map
- key로 조회하기 때문에 빠르게 찾을 수 있다.
- 상대적으로 Hash Collision이 적다. ← 보조
- Thread safe 하지 않다.
- Table
- Thread safe하다. 하지만 Map보다 느리다.
- Map
- Concrete Hash Map
- Hash Map과 Hash Table의 장점만 모은 자료구조
- CAS 알고리즘을 통해 구현
- Hash Map과 Hash Table의 장점만 모은 자료구조
- Binary Search Tree, BST
- 시간복잡도
- Worst Case
- 편향 트리
- Worst Case
- 시간복잡도
- BST vs Hash Table, 모바일 기기용 주소록에는 어떤 자료구조가 좋을까?
- 메모리가 많이 제한되어 있다고 가정
- BST
- 주소록에 정렬이 되어있는 채로 출력하기 때문에
- input size가 매우 크지 않기 때문에 O(1)과 O(log N)의 차이가 없다.
- 주소록에 정렬이 되어있는 채로 출력하기 때문에
- BST
- 메모리가 많이 제한되어 있다고 가정
🍎 알고리즘
상황에 맞는 알고리즘을 선택할 수 있어야한다.
- 정렬 알고리즘
- 각 알고리즘의 평균 시간복잡도, 최악 시간복잡도, 단점
- 그리디 알고리즘
🍎 네트워크
나오는 주제만 나온다
- TCP vs UDP
- TCP
- 3-way hand shaking으로 연결형 통신
- 4-way 통신 해제
- UDP
- 일단 쏜다
- Ex> packet이 유실되도 상관없는 유튜브 스트리밍, 게임
- TCP
- OSI 7 Layer
- 각 계층의 장비를 기억할 것
- Physical Layer
- Data-Link Layer
- 장비
- 스위치
- 브릿지
- 이더넷
- 장비
- Network Layer
- Routing
- Transport Layer
- TCP, UDP
- Presentaion, Session, Application Layer
- Presentation: 보안
- Session: 세션
- Application: http
- DNS
- www.naver.com을 입력하면 어떤 일이 벌어지나요?
- 우선, 로컬 캐시에 조회
- OSI 7 Layer로 설명할 수 있을까?
- 7계층의 역순으로 설명하자
- TCP로 조회. http 1.1를 사용 → 네이버의 경우
- www.naver.com을 입력하면 어떤 일이 벌어지나요?
🍎 데이터베이스
- 인덱스? 장단점은?
- 테이블에서 조회할 때, 빠르게 할 수 있다.
- 하지만, 추가적인 저장 공간이 필요하고, 모든 필드가 인덱스로 삭제할 때 soft delete를 하기 때문에 데이터가 남아있을 수 있다.
- 카디널리티? 어떤 필드를 인덱스로 선택해야할까?
- 중복도가 가장 낮은 필드로
- 인덱스의 자료구조?
- Hash Table은 사용할 수 없다. 왜?
- single result만 조회하는 것이 아니라 range 조회도 하기 때문에
- Binary Search Tree를 개선한 Balanced Tree
- Hash Table은 사용할 수 없다. 왜?
- 트랜잭션?
- 데이터베이스의 처리 단위
- 특징
- ACID
- INNER JOIN vs OUTER JOIN, 집합으로 표현
- inner join
- 두 테이블의 공통된 필드값으로 조회
- 교집합
- outer join
- 합집합
- inner join
🍎 OOP
- 객체지향 프로그래밍?
- 추가로 SOLID와 연결지을 수 있으면 좋다.
- 공통된 속성과 함수를 추상화한 클래스로 구현한 객체로 프로그래밍한 것
- 장점
- 코드 재사용성
- 유지보수가 쉽다
- 대형 프로젝트에 적합하다.
- 단점
- 설계에 시간이 오래 걸린다.
- 처리 속도가 느리다.
- 특징
- 추상화
- 공통된 속성과 함수를 뽑아내는 것
- 캡슐화
- 접근제어자를 통해 구현한다
- 상속
- 자바는 왜 다중 상속을 왜 지원하지 않을까?
- 다이아몬드 문제
- 자바는 왜 다중 상속을 왜 지원하지 않을까?
- 다형성
- overload, override
- 추상화
🍎 보안
- Hash vs Encryption
- Hash
- 단방향 암호화
- SHA256, SHA512
- Encryption
- ?
- https를 예로 들 수 있다.
- 보안 알고리즘은?
- Hash
🍎 소프트웨어 공학
- 애자일 vs 워터폴
🍎 디자인패턴
- 아는 디자인패턴을 모두 말해봐라
'컴퓨터과학' 카테고리의 다른 글
파이썬 정리 (1) (0) | 2024.01.07 |
---|---|
[소마] 블록체인 멘토링 (0) | 2024.01.07 |
OpenSSL을 사용해서 localhost와 https로 통신하자 (0) | 2023.11.29 |
[운영체제] 개요 (0) | 2023.10.25 |
리눅스 (0) | 2023.09.17 |