상세 컨텐츠

본문 제목

part6.리눅스 SE 기술면접

멘토링

by amanda.hyon 2021. 3. 8. 21:56

본문

System Administration

  • SAN, NAS, DAS의 차이점은 무엇인지 설명하시오.
  • chroot에 대해서 설명하시오.
  • 2자로 된 유닉스 명령어를 모두 말해보시오. 그것의 용도는 무엇인지 말해보시오. 2자로 된 명령어를 모두 찾을 수 있는 방법은 무엇인가?
  • 각 파일시스템의 최대 허용 파티션 크기와 파일 크기에 대해서 설명해보시오.
  • FUSE와 파일시스템의 차이는? 성능 차이를 무시하고라도 FUSE는 쓸만한가?
  • Device Tree에 대해서 아는 대로 얘기해보라
  • 좀비(zombie) 프로세스에 대해서 설명하시오.
  • Shell이란 무엇인가?
  • 리눅스 서버에 원격으로 접근할 수 있는 방법과 장단점을 나열하시오.
  • load average (/proc/loadavg) 값은 각각 어떤 의미고 어떻게 해석해야 하는가?
  • LVM structure에 대해서 설명해보시오.
  • 리눅스 배포본을 비교해보시오. (Red Hat, CentOS, Oracle Linux, SUSE, Ubuntu)

Kernel Internals

  • 리눅스의 메모리 할당 방식에 대해서 설명하시오.
  • kmalloc과 vmalloc의 차이점은 무엇인가?
  • /proc/slabinfo를 설명하시오.
  • Semaphore와 mutex의 차이점은 무엇인가?
  • 디바이스 드라이버 작성 시 콜드 부트(cold boot)와 웜 부트(warm boot)의 차이를 설명하시오
  • 리눅스의 I/O 스케줄러에 대해 설명하시오.
  • spinlock, semaphore의 차이점을 설명하시오.
  • 리눅스의 네임스페이스가 무엇인가? (가상화 관련/도커 컨테이너등에서 사용)

Network

  • TCP 핸드쉐이크 프로세스(connect & close)에 대해서 설명하시오. (중)
  • TCP, UDP, ICMP에 대해서 설명하시오. (중)
  • TIME_WAIT 상태는 왜 필요한가? (중)
  • TCP Half-open connection에 대해서 설명하시오. (중)
  • 서버에 설정된 네트워크 인터페이스 리스트와 라우팅 설정에 대해서 설명하시오.
  • MTU의 기본값은 1500이다. 이를 바꿔야 하는 경우에 대해서 설명하시오.
  • MTU의 값을 바꿔야 하는 경우를 어떻게 확인이 가능한지 설명하시오.
  • IP의 서브넷 마스크 계산 방법은 어떻게 되는가?
  • 유니캐스트 멀티 캐스트 브로드캐스트의 차이?
  • 데이터센터 네트워크의 특징을 이야기 해보라
  • 프록시는 무엇인가?
  • 로드밸런서는 무엇인가?
  • CLOS 토폴로지가 무엇인가?
    • 이 토폴로지의 장점은 무엇인가
    • 구현에 어떤 기술을 사용하는가?
  • DSR 방식의 로드밸런서가 무엇이고, 어떻게 구현이 되는가?
  • PoP는 무엇인가?
  • BGP가 무엇인가?

Troubleshooting

  • 시스템 Hang을 유발시키는 원인들을 얘기해보고, 그 중 하나에 대해서 설명해보시오.

  • 공유 라이브러리(shared library) 의존성은 어떻게 볼 수 있을까?

  • 시스템 콜과 시그널은 어떻게 트레이스할 수 있나?

  • "filesystem is full" 에러가 발생했다. 그러나 'df' 명령으로는 여전히 여유 공간이 있다고 나온다. 이 상황에 대해서 설명하시오.

  • 리눅스 커널이 OOM killer를 동작시켰을 때 어떤 일이 일어나나?

    • OOM Killer가 가장 먼저 죽일 프로세스를 어떻게 선택하나?
    • (상황에 따라 다르지만, 인터뷰이가 어떤 단서들로 답을 찾아가는지와 해당 프로세스를 어떻게 보호할 수 있는 지에 대해서 언급한다면 만족)
  • 아파치 웹서버가 사용 중인 로그 파일을 삭제했다. 아직 아파치 웹서버를 재시작하지 않은 상태이다. 어떻게 로그 파일을 복구할 수 있을까?

  • 덤프 분석과 관련된 질문은 뭐가 있을까요?

    • 커널 panic이 발생 되었고, 시스템을 재부팅하여 환경은 복구했다.
      이때 본인이 관련 커널 패닉의 발생된 원인이 무엇인지 어떻게 찾아 해결할 것인가?
      - kdump 프로세스 기동을 통한 core dump 파일이 생성되도록 하고, 해당 이슈를 분석하는 방향으로….
    • kexec 툴을 설치해야 하는 이유는? 원리는? 왜 꼭 리부팅이 필요한지?
    • 어떻게 커널은 크래쉬 상태에서 해당 상황에 대한 메모리 덤프를 수행할 수 있는 것인지?
    • 그 여력이 있으면 왜 문제를 해결하거나 복구를 시도하지 않고 덤프만 수행하는지?
  • 최대한 운영 서버와 동일한 환경에서 클라이언트를 테스트해야 한다. 하지만 운영 서버는 사용할 수 없고 클라이언트 코드도 freeze되어 테스트를 위한 어떤 변경도 할 수 없다. 어떤 전략을 사용하겠는가?

  • HDD가 갑자기 read-only로 바뀌면서 서비스가 중단되었다면 어떻게 정상화시킬 수 있을까 ?

  • Load Average가 0.5 ~ 1 사이에서 돌던 널널한 서버가 갑자기 100이 넘어간다면 어떤 현상이 있으며 어떻게 대처해야 하는지 3가지 경우만 설명해보시오.

  • Disk 용량이 80%, 90% 차는 것에 대해 어떻게 대응을 할 것인가? (Log, root, Service 등..)

    • 만약 알람을 설정을 했다면 왜 했고, 왜 그것에 대한 알람을 받아야 되는가?

Performance & Tuning

  • MPP 구성 시 성능이 균일하지 않은 CPU 노드 간 balancing은 어떻게 처리할까?
  • A와 B, 두 대의 시스템이 있다고 가정하자. 두 시스템은 정확히 똑같은 구성(OS, H/W, Memory, swap, configuration, applications, etc… 모든 구성이 똑같다.)이다. 그런데, A 시스템의 응답이 느리다. 반면에 B 시스템은 정상적인 응답을 보인다. 왜 그럴까? 어떻게 해결할 수 있을까?
  • 동일한 하드웨어 구성인데, samba로 파일 서버를 구성하였는데, 파일을 불러오는 속도가 A 서버는 80MB/sec, B 서버는 12MB/sec라면, B 서버 구성에서 무엇을 바꾸어야 A 서버 같이 될 것인가 ?
  • 사내 서버에 대한 보안 스캐닝을 어떻게 진행할 것인가? 그리고, 그에 대한 결과물에 따른 대응 처리는 어찌할 것인가?

Cloud Computing

  • Docker에 대해서 설명해보시오. (Docker와 Docker Compose 및 Swarm, K8S의 구분) (하)
  • Docker가 기존의 VMware 같은 류의 프로그램과 다른 점이 무엇인가?
  • Docker와 하이퍼바이저 기반 가상화의 차이점에 대해서 설명하시오.
  • 스토리지 장애가 생겼을 때를 대비해서 어떤 준비 또는 구성을 하는가? (하)
  • VM Guest 자동화는 어떻게 하는가? (하)
  • 타임서버(NTP)를 사용하고 있지만, VM Guest 시간 동기화가 잘 안될 경우 해결 방법은? (하)
  • Chef, Puppet, ansible, cfengine 등 Configuration Management 자동화툴을 써본 경험을 이야기해보시오.
  • Configuration Management Tool을 사용하는 이유는?
  • CMS의 사용 목적이 변질되는 경우 어떻게 대처할 것인가? (ex: 커맨드 베이스 모니터링 용도로 변질 등)
  • VMware 종류의 가상화 혹은, AWS, GCP, Azure, Softlayer의 Public Cloud 등의 VM을 API로 배치하고 운영해본 경험을 이야기해보시오.
  • 클라우드 업체 중 가장 선호하는 업체와 선호하는 이유는?
  • AWS VPC에 대하여 설명하고, DMZ와 DB 영역을 만들 경우 어떻게 설정할 지 설명하시오.
  • GCP의 네트워크는 다른 벤더에 비교해서 어떤 점이 강점인지 설명하시오.
  • Azure는 stateless라고 알려져 있는데 웹 세션을 유지하기 위해서 어떤 시스템이 필요한지 설명하시오?
  • Azure Active Directory의 Use case에 대하여 설명하시오.
  • Softlayer에서 Vyata나 Citrix netscaler 운영 경험이 있는가?
  • Public Cloud와 Private Cloud가 어떤 차이점이 있는지 설명하시오.
  • IaaS, PaaS, SaaS의 정의와 차이점을 설명하시오.
  • Hybrid cloud를 구축하기 위한 방안으로 통합 콘솔을 지원하는 솔루션은?
  • 클라우드 아키텍쳐에서 Auto-Scaling을 구축하기 위한 아키텍쳐의 기본 설계 시 유의점은?
  • PaaS 플렛폼에서 컨테이너 형태를 사용하기 위한 Application 설계 시 고려 사항은?
  • MSA(Micro Service Architecture)에 대해서 설명하시오.
  • 클라우드 서비스를 운영할 경우 온프레미스 시스템과 비교하여 가장 먼저 고려해야 할 것은? 그렇게 생각하는 이유는?
  • 클라우드와 온프레미스를 하이브리드로 구성할 경우 연결하는 방법은 어떤 것들이 있는지? 주로 선호하는 연결 방법은?
  • 글로벌 서비스를 구현할 경우 해외 사용자의 사용성과 가장 직결되는 모니터링 항목은? (어떤 것을 중점적으로 모니터링해야 하는지?)
  • 우리나라와 특정 국가 간에 연결되는 아키텍쳐를 클라우드로 구성할 경우 어느 벤더를 사용하겠는가? 이유는?
  • 클라우드 벤더에서 사용하는 스토리지 종류와 종류별 주요 사용 목적은?
  • 인스턴스 백업을 구현할 경우 어떻게 구현하겠는가?
  • IaC를 할 경우 어떤 소프트웨어를 가지고 어떻게 구현하겠는가?
  • CI/CD에 대하여 설명하고, 그것을 구현하기 위해서 먼저 준비되어야 할 것은 무엇인가?
  • Docker로 구성된 인프라를 프로덕션 레벨로 사용하기 위해서 준비되어야 할 항목은 무엇이 있나?
  • 컨테이너 모니터링을 하기 위해 사용해야 할 소프트웨어는 무엇이 있는가?
  • 서비스 디스커버리를 하기 위해서는 어떤 오케스트레이션 소프트웨어를 사용해야 하는가?
  • 컨테이너에서 발생된 로그를 어떻게 저장하고 백업해야 하는가?
  • Docker에서 사용하는 파일시스템에 대하여 설명하고 일반적인 파일시스템과 다른점을 설명하시오.
  • 컨테이너 환경에서 사용할 수 있는 오케스트레이션 도구를 제시하시오.
  • SaaS / PaaS / FaaS에 대해서 이야기해보시오.
  • 서버리스는 어떤 아키텍트에 해당하고 왜 사용하는가?
  • GPU를 여러 사용자가 같이 사용할 수 있도록 가상화할 수 있는 방법이 무엇일까?
  • Docker의 이미지 사이즈를 최적화할 수 있는 방법은 어떤 것이 있을까?
  • 리눅스 배포판을 새로 만든다고 가정할 때 어떤 컴포넌트와 유틸리티, 라이브러리를 추가하거나 삭제할 수 있을까?
  • 아마존이나 기타 클라우드에서 맨 처음 부트할 당시에 불러오는 설정은 어떤 것이 있는가?
  • 컨테이너 전용 운영체제에 대해서 알고 있는가?
  • 스태틱 컴파일된 바이너리가 왜 컨테이너 환경과 연관이 되는지 이야기해보시오.
  • 스케일 업 / 스케일 다운 / 스케일 인 / 스케일 아웃의 정의는 무엇이고 차이는 무엇인가?
  • VMware, AWS 등을 API로 배치하고 운영해본 경험을 이야기해보시오.
  • 가상화의 종류에 따른 장단점을 설명하시오.
  • I/O의 성능을 높이기 위해서는 어떻게 해야 할까?
  • Network을 어떻게 가상화할까?
  • 여러 시스템을 배치할 때 보틀넥(bottleneck)는 무엇인가?
  • SDS(Software Defined Storage)의 기능 및 장단점에 대해 설명하시오.
  • Tiered Storage 구성 시 가질 수 있는 장단점을 성능/기능 측면으로 나누어 설명하시오.

Security

  • 시스템 설치 직후 초기 설정을 그대로 쓰지 않는 예를 들어 보시오.
  • 보안 감사 도구에는 어떠한 종류가 있는가.
  • SELinux는 무엇이고, 장점과 단점은 어떤 것이 있는가?
    • SELinux의 policy를 생성해 보았는가?
    • SELinux의 Policy를 관리하는 방법은 무엇인가?
    • enforce와 permissive의 차이는?
  • 컨테이너의 경우는 어떤 방법으로 보안과 관련된 검사를 할 수 있는가?
  • 보통 컨테이너에 설치된 환경이 베어메탈에 설치된 환경보다 안전하다고 이야기하는데 왜 그런 이야기가 나올까?
  • 특정 배포판이 특정 CVE에 안전한지 여부를 어떻게 확신할 수 있는가?
  • 배포판 업데이트 주기는 어떻게 가져가야 한다고 생각하는가?
  • 어떤 컴포넌트나 라이브러리가 안전함을 어떻게 확신할 수 있는가?
    • 업데이트 주기는 어떻게 판단하나
    • 외부와 내부가 분리된 망에서 어떻게 업데이트를 할 수 있을까?
  • 자바에서 사용하는 라이브러리의 보안 취약점을 실시간으로 확인할 수 있는 방법은 어떤 방법이 있는가?
  • 개발자가 특정 개발 도구(특정 버전 이상 등)을 사용해야 한다고 할 때 해당 배포판이 이를 지원하지 않으면 직접 컴파일해 쓰는 경우 보안에 어떤 위험이 있을까?
  • 배포판의 LTS의 의미는 무엇인가?
  • 지금 사용 중인 배포판에 설치된 모든 패키지의 Vulnerability의 Severity를 어떻게 확인할 것인가?
    • 전체를 업데이트할 것인가? 특정 패키지만 업데이트하는 것이 좋다고 판단하는가?
    • 예를 들어, 특정 OS의 특정 버전을 고집하는 경우가 있다면 왜 그럴까.
    • ex) RHEL 7.4가 배포가 되었음에도 불구하고 7.2를 사용하고 있는 경우.
  • 당신이 판단하기에 현재 존재하는 배포판 중에 가장 안전한(?) 배포판은 무엇인가?
    • 그렇게 생각하는 이유는?
    • 컨테이너 전용 OS는?
  • 망분리를 해야 한다고 할때 어떤 방법으로 구현할 수 있을까?
  • SSL 인증서의 종류는 어떤 것이 있는가?
    • 인증서 체인 메커니즘을 이야기 해보라
    • 왜 쓰는가?
  • MITM 공격에 대해서 이야기해보시오.
    • 어떻게 방지할 수 있는가?

관련글 더보기

댓글 영역