리눅스 엔지니어 기술면접 질문지

1 개요[ | ]

2 System Administration[ | ]

  • 설치부터 서비스 구성까지 설정하시오.
  1. SAN, NAS, DAS의 차이점은?
  2. chroot에 대해서 설명하시오.
  3. 2자로 된 리눅스 명령어를 모두 말해보시오. 그것의 용도는 무엇인지 말해보시오. 2자로 된 명령어를 모두 찾을 수 있는 방법은 무엇인가?
  4. 각 파일시스템의 최대 허용 파티션 크기와 파일 크기에 대해서 설명해보시오.
  5. FUSE와 파일시스템의 차이는? 성능 차이를 무시하고라도 FUSE는 쓸만한가?
  6. zfs 또는 btrfs의 출현 이유는? 기존 파일시스템의 한계는 무엇인가?
  7. Device Tree에 대해서 아는 대로 얘기해보라.
  8. 새 디스크를 추가하면서 파일시스템을 변경하려고 한다. 이때 유의할 사항은?
  9. Database Server 구성 시 data, index, log 저장을 나누는 것이 유리한가? 이유는?
  10. 서버 아키텍처에서 NUMA의 장단점은?
  11. 좀비(zombie) 프로세스에 대해서 설명하시오.

3 Kernel Internals[ | ]

  1. 리눅스의 메모리 할당 방식에 대해서 설명하시오.
  2. kmalloc과 vmalloc의 차이점은 무엇인가?
  3. /proc/slabinfo를 설명하시오.
  4. Semaphore와 mutex의 차이점은 무엇인가?
  5. 펌웨어(firmware) 업데이트를 하기 위해서 spi 통신을 쓰는데, 해당 모듈 통신 프로토콜을 설계할 때, 유의할 사항은?
  6. 디바이스 드라이버 작성 시 콜드 부트(cold boot)와 웜부트(warm boot)를 구분해서 작성할 필요 있는가? 구체적인 시나리오를 기술하시오.
  7. 리눅스의 I/O 스케줄러에 대해 설명하시오.
  8. 세마포어와 스핀락의 차이점에 대해서 설명하시오.
  9. spinlock, semaphore의 차이점을 IT 비전공자가 이해하기 쉽게 설명하시오.
  10. [프로세스관리] context swtching에 대해 IT 비전공자가 이해하기 쉽게 설명하시오.
  11. 가상메모리에 대해 IT 비전공자가 이해하기 쉽게 설명하시오.
  12. 리눅스의 네임스페이스가 무엇인가?(가상화 관련/도커 컨테이너등에서 사용)

4 Network[ | ]

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

5 Troubleshooting[ | ]

  • 1. 시스템 Hang을 유발시키는 원인들을 얘기해보고, 그 중 하나에 대해서 설명해보시오.
  • 2. 공유 라이브러리(shared library) 의존성은 어떻게 볼 수 있을까?
  • 3. 시스템 콜과 시그널은 어떻게 트레이스할 수 있나?
  • 4. "filesystem is full" 에러가 발생했다. 그러나 'df' 명령으로는 여전히 여유 공간이 있다고 나온다. 이 상황에 대해서 설명하시오.
  • 5. 리눅스 커널이 OOM killer를 동작시켰을 때 어떤 일이 일어나나? OOM Killer가 가장 먼저 죽일 프로세스를 어떻게 선택하나?

6 Performance & Tuning[ | ]

7 Experiences[ | ]

8 Embedded Linux Development[ | ]

9 Virtualization[ | ]

10 Security[ | ]

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

11 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}