본문 바로가기

Engineer/Dobby Life (Lupin)

시스템 엔지니어 면접 질문 v2 (실제 받아본 질문)

반응형

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
반응형