반응형
A list of expected interview questions for System Engineer v2
32bit vs 64bit
- cpu의 레지스터의 한 번에 처리량 차이
- 2의 32승 / 2의 64승
paging vs swaping
- 페이징 : 가용메모리 부족시 페이지 단위로 디스크로 옮기는 것
- 스왑핑 : 프로세스 전체를 옮기는 것
유저모드 vs 커널모드
- 리눅스의 user 모드와 root 모드의 차이
- 일반 애플리케이션 실행 vs 메모리, 디스크 등에 접근
Quorum (쿼럼)
- 정족수 개념으로, 의결을 위한 최소한의 인원수로 HA 구성에서 활용
- raw device로 1GB 정도를 할당한 다음 cluster 구성할 때 quorum 용도로 포함시켜서 구성
- 클러스터가 2대일 경우 서로 자기가 마스터라 우기는 스플릿 브레인에 빠질 수도 있음
Cluster vs Replica
- cluster - 공유 볼륨등을 활용하여 Active - Standby 형태로 운영
- replica - 실시간 복제 방식
- 둘다 failover 발생 / failover를 없애려면 active - active 형태로 운영
프로세스와 스레드 차이
- 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위
- 스레드는 할당받은 자원을 이용하는 실행의 단위 (프로세스 내에 여러 개 생성 가능)
- 애플리케이션 하나가 프로세스이고, 그 안에서의 분기 처리가 스레드
멀티 스레딩
- 멀티 프로세스에 비해 메모리 공간과 시스템 자원 소모가 줄어든다.
- 동시에 접근하기 때문에 동기화 작업이 필수로 들어가야 하는데 성능저하가 올 수도 있다.
동기 vs 비동기
- 3가지 일을 순서대로 진행하는 것이 동기
- 3가지 일을 동시에 진행하는 것이 비동기
동시성 vs 병렬성
- 동시성: 하나의 코어에서 여러 스레드가 번갈아가며 실행, 즉 1개의 코어에서 실행
- 병렬성: 멀티 코어에서 여러 스레드를 동시에 실행, 모든 코어를 활용
nginx vs apache
- apache는 요청 당 스레드 또는 프로세스가 처리하는 구조 (안정성, 확장성, 호환성)
- nginx는 비동기 이벤트 기반으로 요청 (성능)
커널이란
- 하드웨어와 응용프로그램 사이에서 인터페이스를 제공하여 자원을 관리하고 사용할수 있게 해주는 역할
커널 튜닝
- etc/sysctl.conf
- kernel.pid_max = 65535
- net.ipv4.tcp_syncookies = 1
- net.ipv4.icmp_echo_ignore_all = 1
IAAS vs PAAS vs SAAS
- infra as a service : 가상화 플랫폼까지 제공 (OS설치부터 사용자 역할)
- platform as a service : 미들웨어 설치까지 제공 (어플리케이션 설치부터 사용자 역할)
- software as a service : 모든 서비스를 제공
CI / CD
- 지속적 통합 / 지속적 제공
- 개발부터 배포 단계까지 자동화하여 사용자에게 효율적이고 빠르게 제공하는 것을 의미
http
- HyperText Transfer Protocol
- 텍스트 기반의 통신 규약 프로토콜
http 문제점
- HTTP 는 평문 통신이기 때문에 도청이 가능하다.
- 통신 상대를 확인하지 않기 때문에 위장이 가능하다.
- 완전성을 증명할 수 없기 때문에 변조가 가능하다.
- HTTP에 암호화와 인증, 그리고 완전성 보호를 더한 것이 HTTPS이다.
get vs post
- get : 가져온다는 개념으로 데이터를 요청할 때 사용 (select)
- post : 수행한다는 개념으로 데이터를 업데이트할 때 (create, update)
tcp vs udp
- tcp는 3 way 방식의 신뢰성이 중요한 프로토콜
- udp는 비연결형으로 신뢰성x, 빠른 통신에 사용
tcp time_wait
- 연결 종료까지 기다리는 시간, 60초 (튜닝 불가능)
- 지연 패킷이 발생할 경우 데이터 무결성 문제가 발생
- 원격 종단의 연결이 닫혔는지 확인하여 오동작을 막기 위함
3 way handshake
- TCP 연결을 초기화하기 위해 수행되는 절차
- syn → syn+ack → ack
4 way handshake
- 세션을 종료하기 위해 수행되는 절차
- fin → ack → fin → ack
리눅스 네트워크 상태 확인
- netstat -i
- ss -i
L2, L3, L4, L7
- L2 : 스위칭 허브
- L3 : 라우터, 공유기
- L4 : 로드밸런싱
- L7 : 로드밸런싱
- L4 는 IP/TCP 정보로만 스위칭하지만, L7은 헤더의 패킷 정보로도 스위칭이 가능
- 스위치가 없을 경우 HAProxy 를 통해 분배도 가능
본딩
- 2개의 네트워크를 하나로 묶어서 관리하는 방법
- 본딩용 네트워크 인터페이스를 만들고, 커널에서 본딩을 사용한다는 옵션을 추가, 본딩 옵션으로 사용
- 모드는 0~6 총 7가지가 있으며, 보통 0 (라운드로빈) 과 1 (active-standby) 를 많이 사용함
index
- DB 테이블의 검색 속도를 향상하기 위한 자료 구조
- 약 10%의 저장공간이 필요하기 때문에 오히려 성능 저하가 올 수도 있다.
트랜잭션
- 작업의 완전성을 보장해 주는 개념
- 여러 스탭이 중복적인 일처리를 할 때, 모두 완벽하게 처리하거나 모두 원상태로 복구시키는 역할
connection pool 확인방법
- db에 쿼리를 날려서 확인
- java 등의 코드를 통해 로그로 확인
- php의 경우 config에 나와 있는 max 사이즈 등을 확인하여 예측 가능
redis 특징
- pub/sub 지원 → 채팅, 메시징 및 대기열
- 다양한 자료구조 지원 (sorted set) → 게임 순위표
- 사용자의 세션 스토어 → 유저 킥 등에 활용 가능
Docker add vs copy
- add : 압축파일은 압축을 해제하여 복사, wget 사용 가능
- copy : host 환경의 파일/폴더를 복사
docker start vs run 차이
- start : 중지된 컨테이너를 실행
- run : create + start 가 합쳐진 명령어
pub/sub kafka vs redis
- kafka는 우체통개념. 이벤트 발생하면 저장하고 그에 상응하는 내용을 출력
- redis는 TV채널개념. 이벤트가 발생해도 저장하지 않고 관련된 모든 내용 출력
by mkdir-chandler
728x90
반응형
'Engineer > Dobby Life (Lupin)' 카테고리의 다른 글
식권대장 결제 위임 방법 (0) | 2023.04.10 |
---|---|
소소한 생활 Tip (0) | 2023.04.07 |
시스템 엔지니어 면접 예상 질문 (실제 받아본 질문) (0) | 2023.02.14 |
회사 복지 정리 (2023년) (0) | 2023.02.13 |
2023년 1월 회사별 연간 복지 포인트 (0) | 2023.01.17 |