본문 바로가기
프로그램개발/Linux(Apache.vim)

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

by 크레도스 2017. 11. 1.


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


작성자 : 김경헌, 김병찬, 김승백, 김영근, 김성한, 김진중, 김태훈, 박범석, 박순성, 박재화, 박주연, 박진우, 배권한, 유형목, 윤종민, 이승운, 장정철, 조용일, 조윤석, 조희진, 차영호, 홍영기,백흥주, 공용준,김중겸

* ctrl+alt+m 누르면 댓글 삽입


난이도

  • 하 - 경력 3년 차 미만

  • 중 - 경력 10년 차 미만

  • 상 - 경력 10년 차 이상



목차




1. System Administration

2. Kernel Internals

3. Network

4. Troubleshooting

5. Performance & Tuning

6. Experiences

7. Embeded Linux Development

8. Virtualization

9. Cloud Computing

License


이것 아무나 수정이 가능한 문서네요.. 제한을두셔야 할 것 같습니다.


1. System Administration


  1. 설치부터 서비스 구성까지 설정하시오 (리눅스 엔지니어 기술 면접이라면 수많은 지식도 중요하지만 실무 환경에서 어떻게 행동하고 어떻게 문제를 해결하면서 결과를 만들 수 있는지 확인하는 것이 더 중요하다고 생각합니다.) 설치부터 서비스 구성까지 제한 시간 없음.

    1. 리눅스 설치 CD, 서버 2대(레이드 컨트롤러 포함, OS 디스크 2개, Data 디스크 3개, Spare 디스크 1개), 스위치 1대(VLAN 설정 가능한 스위치), 스위치 시리얼 케이블, USB 시리얼 케이블, 랜선 2~4개, 키보드, 마우스, 모니터, 인터넷 가능한 노트북 1대 제공

    2. 하드웨어 구성 정보 (OS : Raid1 / Data : Raid 5 / Global hot spare 1ea)

    3. 리눅스 설치 정보(BIOS legacy mode 설치 1대, BIOS UEFI mode 설치 1대)

    4. 기술 면접 보고자 하는 서비스 설정 예시를 제공하고 구성하도록 자세한 정보를 제공합니다.

    5. 면접자가 문제를 모두 풀었을 경우 문제 정답에 해당하는 스크립트 및 서비스를 확인하여 결과를 보고 그에 맞는 기술적인 질문을 합니다. (어떤 부분은 설정을 하였지만 다른 어떤 부분은 왜 설정안했는지?, 면접관이 생각하지 못한 부분을 설정했다면 왜 설정을 했는지?

    6. 리눅스 5년이상 면접자의 경우 위의 설치부터 서비스 구성까지 해결하는 것보다 2~4 시간안에 문제를 포기하고 집으로 돌아가는 경우가 많습니다.



  1. 특수 파일의 MAJOR와 MINOR 번호가 무엇인지 설명하시오.

    1. 장치 파일에 할당된 번호. Major number는 device가 driver를 구분하기 위해 존재함. Minor number는 driver에 할당된 여러 device들을 구분하기 위해 할당됨.

  2. nscd가 무엇인지 설명하시오.

    1. Name Service Cache Daemon (nscd). nscd는 이름 서비스 검색을 캐시 기록함. NIS+의 성능을 크게 개선시키며, DNS 작업도 도와줌.

  3. SAN, NAS, DAS의 차이점은 무엇인지 설명하시오.

    1. http://daddycat.blogspot.kr/2011/05/das-nas-san.html

    2. http://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=5&ved=0CFcQFjAE&url=http%3A%2F%2Fwww.sqler.com%2F%3Fmodule%3Dfile%26act%3DprocFileDownload%26file_srl%3D341660%26sid%3Ded20c756fdd3c8c6429e13e5484be5e2&ei=prCJUq-LG8qjiQeC-IGQAw&usg=AFQjCNFpWFLstgPvTagcYee0XYfGLC0GmQ&sig2=e1ee-2T5wdpZhWDWu-r0PA&bvm=bv.56643336,d.aGc&cad=rjt

  4. chroot에 대해서 설명하시오.

    1. http://en.wikipedia.org/wiki/Chroot

  5. 2자로 된 유닉스 명령어를 모두 말해보시오. 그것의 용도는 무엇인지 말해보시오. 2자로 된 명령어를 모두 찾을 수 있는 방법은 무엇인가?

    1. http://www.hioreanu.net/cs/two-letter-commands.html

    2. find / -name '[a-z][a-z0-9]' -type f -executable

- PATH 를 추가하면 추가점

  1. 각 파일시스템의 최대 허용 파티션 크기와 파일 크기에 대해서 설명해보시오.

    1. http://oktopbang.tistory.com/entry/%ED%8C%8C%EC%9D%BC%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%A1%B0%EC%82%AC-%EB%B9%84%EA%B5%90-%EB%B6%84%EC%84%9D

  2. FUSE와 파일시스템의 차이는? 성능 차이를 무시하고라도 FUSE는 쓸만한가?

    1. http://blog.naver.com/PostView.nhn?blogId=xogml_blog&logNo=130141202446

  3. zfs 또는 btrfs의 출현 이유는? 기존 파일시스템의 한계는 무엇인가?

    1. 기존 파일시스템에 비해 높은 데이터 안정성을 보장하며 볼륨 매니징을 내장하는 등 많은 기능들을 포함하고 있기 때문에 차세대 파일시스템으로 자주 불ㅑ리며, Btrfs 가 ZFS clone 이기 때문에 컨셉트나 제공하는 기능 및 사용 방식이 매우 유사함. 데이터 안정성에서도 커다란 향상을 가지고 왔는데, bit 단위로 데이터 안정성을 보장하는 end-to-end data integrity로 silent corruption(하드디스크 데이터가 bit 단위로 슬며시 변질되는 것을 말함. 의외로 일어날 확률이 높지만, 기존 파일시스템의 경우는 이런 소규모의 변질은 아예 인식 자체를 하지 못했기 때문에 모르는 분들이 많음.) 을 방지하고 자체적인 셀프 힐링 기능도 포함하고 있음.

    2. http://www.mapoo.kr/entry/ZFS-%EC%99%80-Btrfs

  4. Device Tree에 대해서 아는 대로 얘기해보라.

    1. http://www.devicetree.org/Main_Page

  5. 새 디스크를 추가하면서 파일시스템을 변경하려고 한다. 이때 유의할 사항은?

  6. Database Server 구성 시 data, index, log 저장을 나누는 것이 유리한가? 본인 대답에 대한 이유는?

  7. 서버 아키텍처에서 NUMA의 장단점은?

    1. http://rockball.tistory.com/144

  8. NUMA를 이용해 본 경험이 있으신가요? 있다면 어떤 용도로 사용을 하셨나요?

    1. 있습니다.

    2. 먼저 Nvidia GPU가 설치되어 있는 PCIe 슬롯 위치를 확인하고, 해당 메인보드 또는 서버 기술 문서를 확인하여 해당 PCIe 슬롯이 어떤 CPU에 연결되는지 확인합니다. Nvidia GPU의 bandwidth 테스트를 할 때 numactl --physcpubind 옵션을 사용하여 GPU가 연결되어 있는 CPU에서만 bandwidth 테스트를 진행하도록 설정합니다.

  9. 좀비(zombie) 프로세스에 대해서 설명하시오.

    1. When a program forks and the child finishes before the parent, the kernel still keeps some of its information about the child in case the parent might need it - for example, the parent may need to check the child's exit status. To be able to get this information, the parent calls `wait()'; In the interval between the child terminating and the parent calling `wait()', the child is said to be a `zombie' (If you do `ps', the child will have a `Z' in its status field to indicate this.)

  10. Shell 이란 무엇인가?

    1. http://math.ewha.ac.kr/~jylee/CompMath.html/unix2/ch3.html

  11. 리눅스 서버에 원격으로 접근할 수 있는 방법과 장단점을 나열하시오.

    1. telnet, ssh, rsh ...

  12. load average (/proc/loadavg) 값은 각각 어떤 의미고 어떻게 해석해야 하는가

    1. 멀티코어인 경우에는?

  13. # rm -rf / 또는 rm -rf /etc 를 실행하면 어떤일이 발생하는가? (분위기 풀어주는 용도, )

    1. 궁금해서 직접 해봤다고 하면 가산점

      1. rm -rf /를 실행시키는 경우는 드물지만 rm -rf /etc를 실행하는 경우가 있습니다. 이유는 어플리케이션의 /app/etc/를 지우려다가 실수로 OS의  /etc를 지우는 경우 입니다

    2. 추가 질문. "정말 다 지워집니까?”  → 요즘은 안지워지는데요 ㅡㅡ

      1. 실수로 rm -rf /etc 그리고 3초후 Ctrl+C를 했을 때 파일의 삭제의 정도는 CPU의 처리량 만큼 많습니다. 그 이후 부팅시 부팅이 안되는 문제가 발생합니다.

    3. 실수로 rm -rf /etc를 하고 복구를 해본 경험이 있습니까? 있다면 어떻게 복구를 하셨나요?

      1. 백업 및 복구가 잘 되어 있는 경우 해당 프로세스로 복구하면 되지만 없는 경우 같은 서비스를 하는 서버에서 파일을 복사하여 복구하고 수동으로 해당 서버에 맞는 설정들을 모두 합니다..

    4. 다 안지워지면 지울수 있는 방법은?

      1. 리눅스 부팅 CD로 부팅해서 모든 파티션을 지우는 방법.

  14. 근래 국내에서 많이 사용하는 리눅스 배포본 몇 가지를 언급하고, 각 배포본의 특징들을 설명해보시오

  15. 새로 설치한 리눅스 서버가 막 부팅이 완료되었다. root로 로그인해서 어떤 명령어들을 수행할 지 설명해보시오.

    1. 새로 설치한 리눅스 서버의 용도가 무엇인지 확인합니다.

      1. 설치 로그 및 부팅시 이슈 사항 확인 (/root/anaconda-ks.cfg, dmesg, /var/log/messages)

      2. 런레벨 확인(runlevel)

      3. 설치 파티션 확인 (/etc/fstab, df -hT)

      4. 네트워크 구성 확인(ifconfig,netstat -nr, /etc/sysconfig/network-scripts/*, /etc/sysconfig/static-routes, /etc/resolv.conf, /etc/udev/rules.d/70-persistent-*)

      5. 서버 보안 레벨 확인(sestatus, iptables, /etc/pam.d/*, /etc/xinetd.d/*,  /etc/hosts.allow, /etc/hosts.deny, /etc/nologin, /etc/sudoers, uname -a)

      6. 설치 어플리케이션 확인(/etc/passwd, rpm -qa, systemctl | grep active | sort)

      7. 서비스 확인 (ps, top, sar, iostat, uptime)

    2. 서버의 용도를 확인한 후 그에 맞는 설정들이 잘 되었는지 점검합니다.

    3. 점검 결과에 따라 새로 설치한 리눅스 서버가 정상 또는 비정상인지 결과를 만들어 냅니다.

    4. uptime, uname, cat /etc/redhat-release, cat /etc/ssh/sshd_config, passwd,
      useradd, cat /etc/procinfo, free -m, df -h, netstat -nat, iptables -L, getenforce,
      yum list available, …

    5. 서버 상태 확인, 기본 보안 설정 확인 및 적용, 등등…

  16. LVM structure에 대해서 설명해보시오.

    1. PV, VG, LV ……...

  17. vmstat 의 각필드에 대해서 설명하여 보십시요.

  18. 리눅스 OS의 백법 방법에 대해서 설명하여 보십시요.

    1. 운영중인 시스템에서 고전적인 리눅스 백업방법인 tar을 이용한 백업에서 동일한 시점의 데이타를 백업 하는 방법은?




2. Kernel Internals

  1. 리눅스의 메모리 할당 방식에 대해서 설명하시오.

    1. https://www.linux.co.kr/home/lecture/index.php?cateNo=1&secNo=32&theNo=11125&leccode=11128

    2. http://www.careercup.com/question?id=14410775

  2. kmalloc과 vmalloc의 차이점은 무엇인가?

    1. https://kldp.org/node/114169

    2. kmalloc은 메모리 할당 크기에 제한이 있고, 빠르게 할당되고..또 뭐가 있나..아..연속적인 공간으로 할당하고(DMA에 써먹는 용도로..) vmalloc은 크게 할당이 가능한 대신 느리고.. 기타 나머지는 생략.

  3. /proc/slabinfo 를 설명하시오.

    1. https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/s2-proc-slabinfo.html

  4. Semaphore와 mutex의 차이점은 무엇인가?

    1. http://www.careercup.com/question?id=7944676

  5. 펌웨어(firmware) 업데이트를 하기 위해서 spi 통신을 쓰는데, 해당 모듈 통신 프로토콜을 설계할 때, 유의할 사항은?

  6. 디바이스 드라이버 작성 시 콜드 부트(cold boot)와 웜부트(warm boot)를 구분해서 작성할 필요 있는가? 구체적인 시나리오를 기술하시오.

  7. 리눅스의 I/O 스케줄러에 대해 설명하시오.

    1. http://www.linuxjournal.com/article/6931?page=0,0

  8. 세마포어와 스핀락의 차이점에 대해서 설명하시오.

    1. 세마포어는 어떤 자료 구조와 연계된 간단한 카운터로 모든 커널 스레드는 자료 구조에 접근하기 전에 해당 세마포어를 검사한다. 각 세마포어는 다음으로 구성된 한 객체이다.

      1. 정수 변수, 기다리고 있는 프로세스 목록, 두 개의 원자적인 메소드: down & up

    2. 세마포어는 두 개 이상의 프로세스가 보호되고 있는 자원을 동시에 쓸 수 있다. 세마포어를 잡고 있는 프로세스는 sleep 가능하다.

    3. 스핀락은 어떤 커널 자료 구조는 서로 다른 CPU에서 동작하는 커널 제어 경로가 동시에 접근하지 못하도록 해야 한다. 이 말은 스핀락은 어느 한 순간 단 하나의 프로세스만 자원을 쓸 수 있다. 스핀락을 잡고 있으면 그 프로세스는 sleep할 수 없다. 이때 자료 구조를 갱신하는데 필요한 시간이 짧으면 세마포어는 매우 비효율적이 된다. 유니프로세서 환경에서는 스핀락이 필요 없다.

  9. spinlock, semaphore의 차이점을 IT 비전공자가 이해하기 쉽게 설명하시오.

  10. [프로세스관리] context swtching에 대해 IT 비전공자가 이해하기 쉽게 설명하시오.

  11. 가상메모리에 대해 IT 비전공자가 이해하기 쉽게 설명하시오.





3. Network

  1. TCP 핸드쉐이크 프로세스 (connect & close)에 대해서 설명하시오. (중)

    1. http://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=14&ved=0CFQQFjAN&url=http%3A%2F%2Fwww.cs.northwestern.edu%2F~agupta%2Fcs340%2Fproject2%2FTCPIP_State_Transition_Diagram.pdf&ei=2rSJUtr0MMzGkwWM3YHgCA&usg=AFQjCNFUHxGWWK4K5C4ujJaohuY5XtMbiQ&sig2=1y1DJE1FFdCeEWtu5d8YAg&bvm=bv.56643336,d.aGc&cad=rjt

  2. TCP, UDP에 대해서 설명하시오. (중)

    1. TCP:http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/TCP_IP/TCP_Header

    2. UDP:http://www.joinc.co.kr/modules/moniwiki/wiki.php/article/UDP_%BC%D2%C4%CF_%C7%C1%B7%CE%B1%D7%B7%A1%B9%D6

  3. TIME_WAIT 상태는 왜 필요한가? (중)

    1. 서버와 클라이언트간의 세그먼트 전송중에 세그먼트 손실로 인한 최대 허용기다림을 위한 시간을 부여해서 안전한 데이터 전송을 가능하도록 하려는 것이라고 이해하면 된다. 이미 닫힌 소켓의 주소에 지연된 패킷이 도착할 경우, 서버가 완전히 닫기 위해 LAST_ACK 상태에 놓여있을 때 정상적인 경우라면 클라이언트 측에 보낸 마지막 ACK가 도착하고 연결이 종료가 되나, 중간에 네트워크 오류라든지 다양한 문제들로 ACK가 도착하지 않으면 서버는 다시 한 번 FIN을 재전송하게 된다. 하지만 클라이언트는 이미 종료했다고 가정했기 때문에 FIN을 수신할 소켓이 없다. 이렇게 되면 서버측은 계속 재전송하다가 제한된 재전송 수치를 넘기면 연결을 취소해야한다. 이것은 매우 비효율적이므로 클라이언트에서 닫힌 소켓을 잠시동안 TIME_WAIT 상태로 두고 지연된 패킷이나 재전송된 패킷들을 처리하도록 하는 것이다. TIME_WAIT 상태에서 재전송된 패킷을 받으면 응답하거나 버리거나 알아서 처리한다.

    2. http://zerobell.tistory.com/6

  4. TCP Half-open connection에 대해서 설명하시오. (중)

    1. http://en.wikipedia.org/wiki/TCP_half-open

  5. 서버에 설정된 네트워크 인터페이스 리스트와 라우팅 설정에 대해서 설명하시오

  6. MTU 의 기본 값은 1500이다. 이를 바꿔야 하는 경우에 대해서 설명하시오

  7. MTU 의 값을 바꿔야 하는 경우를 어떻게 확인 가능한 지 설명하시오

  8. IRQ 처리 방법을 설명하시요

  9. DPDK의 개념과 IRQ의 상관관계에 대해서 설명하시요.

  10. socket buffer에 담기지 않는 내용은?

  11. TCP congestion algorithm의 종류와 특징은?

  12. OVS와 리눅스 브릿지의 공통점과 차이점에 대해서 설명해주세요




4. Troubleshooting

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

    1. http://morenice.tistory.com/79

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

    1. http://blog.naver.com/PostView.nhn?blogId=hermet&logNo=87860867&parentCategoryNo=9&viewDate=¤tPage=1&listtype=0

    2. ldd 스크립트 돌려보면 나오지.

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

    1. http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Development/Env/strace

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

    1. inode 부족일 경우가 있음. df -i 로 inode 상태를 확인

    2. 파일시스템 full인데도 df 쳐보면 용량이 남아 있다고 나오는건 root 가 작업할수 있는 파일시스템 여유공간을 남겨 놓기 때문에 그건거고..

  5. 리눅스 커널이 OOM killer를 동작시켰을 때 어떤 일이 일어나나? OOM Killer가 가장 먼저 죽일 프로세스를 어떻게 선택하나? (상황에 따라 다르지만, 인터뷰이가 어떤 단서들로 답을 찾아가는지와 해당 프로세스를 어떻게 보호할 수 있는 지에 대해서 언급한다면 만족)

    1. http://seblog.mirr4u.com/581

  6. 아파치 웹서버가 사용 중인 로그 파일을 삭제했다. 아직 아파치 웹서버를 재시작하지 않은 상태이다. 어떻게 로그 파일을 복구할 수 있을까?

    1. http://rbgeek.wordpress.com/2012/08/24/how-to-recover-deleted-apache-log/

    2. http://unix.stackexchange.com/questions/58949/recovering-deleted-file-held-open-by-apache

    3. /proc/<pid>/fd/

  7. 덤프 분석과 관련된 질문은 뭐가 있을까요?
    커널 panic 이 발생 되었고, 시스템을 재부팅 하여 환경은 복구 했다.
    이때 본인이 관련 커널 패닉의 발생된 원인이 무엇인지 어떻게 찾아 해결할것인가?

  1. kdump 프로세서 기동을 통한 core dump 파일이 생성 되도록 하고, 해당 이슈를 분석하는 방향으로….
    http://fedoraproject.org/wiki/How_to_use_kdump_to_debug_kernel_crashes

  1. 최대한 실서버와 동일한 환경에서 클라이언트를 테스트해야 한다. 하지만 실서버는 사용할 수 없고 클라이언트 코드도 freeze되어 테스트를 위한 어떤 변경도 할 수 없다. 어떤 전략을 사용하겠는가?

    1. dns 훼이크

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

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

  4. Disk 용량이 80%, 90% 차는것에 대해 어떻게 대응을 할것인가?
    그리고 만약 알람을 설정을 했다면 왜 했고, 왜 그것에 대한 알람을 받아야 되는가?

  5. 최근에 이슈가 되었던 glibc 보안 이슈에 대해서 어떻게 생각 하는지?




5. Performance & Tuning

  1. MPP 구성 시 (성능이) 균일하지 않은 CPU 노드 간 balancing은 어떻게 처리할까?

  2. A와 B, 두 대의 시스템이 있다고 가정하자. 두 시스템은 정확히 똑같은 구성(OS, H/W, Memory, swap, configuration, applications, etc… 모든 구성이 똑같다.)이다. 그런데, A 시스템의 응답이 느리다. 반면에 B 시스템은 정상적인 응답을 보인다. 왜 그럴까? 어떻게 해결할 수 있을까?

    1. A 시스템에서 도는 프로세스 중 하나가 메모리를 잡아먹고 있는 듯 하다고 하면, 메모리 여유 공간이 충분하고, 그런 프로세스는 없다. 여전히 A 시스템은 느리다. 어쩌겠냐고 되물음.

    2. 본 질문은 면접자의 문제 해결 스킬에 대해 알아본다. 어플리케이션, DNS, 네트워크, 사용자 폭주, 클라이언트 설정 차이, 데이터베이스, 디스크 I/O, 데이터 손상 등등 많은 경우의 수에 대해서 설명하고 접근해나가는 것을 본다.

  3. 동일한 하드웨어 구성인데, samba 로 파일 서버를 구성하였는데, 파일을 불러오는 속도가  A 서버는 80 MB / sec, B 서버는 12 MB / sec 라면 B 서버 구성에서 무엇을 바꾸어야 A 서버 같이 될 것인가 ?

  1. NIC 속도가 1Gb 인지 100 Mb 로 제한되고 있는지 확인

    1. ethtool eth0

    2. ethtool -s eth0 speed 1000 autonego off duplex full

  2. HDD 가 sata1 으로 잡힌 것은 아닌지 확인 또는 HDD 케이블 확인

  3. samba 설정 파일 확인

    1. 아래 옵션에서 숫자를 점점 키워 보면서 확인

    2. socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=4096 SO_RCVBUF=4096

  4. 혹시 자잘한 파일이 많은지도 한번 확인 필요

  1. 사내 서버에 대한 보안 스캐닝을 어떻게 진행 할것인가?
    그리고 그에 대한 결과물에 따른 대응 처리는 어찌 할것인가?

    1. 관련 서비스 대상파악

    2. nmap, port스캐닝, 프로세서 별 데몬 체크
      nmap -sS -O -v



  2. 스토리지의 성능 지표에서 Throughput과 bandwidth에 대해서 설명하십시요.

  3. 서비스(서버)의 성능과 관련된 병목지점에 대해 설명하십시요.



6. Experiences

  1. 리눅스 부트 프로세스를 최대한 자세히 설명하시오. 시스템에 전원이 켜진 후부터 프롬프트가 뜰 때까지에 대해서 설명하시오. (BIOS가 어떻게 boot device를 찾는지, MBR의 코드가 어떻게 bootloader를 불러오는지, 커널이 init 프로세스를 어떻게 시작하는지 등등. 이 부분은 문제/장애 해결을 위한 단계별 접근과 관련이 있으므로 이해하고 있는 지를 확인) (하),(중)

    1. http://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%8B%9C%EC%9E%91_%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4

    2. http://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=1&ved=0CDQQFjAA&url=http%3A%2F%2Fwww.linux.co.kr%2Flecture%2Flec_linux_01%2Flec-data%2F08data.pdf&ei=yreJUvWoJauhiAebyYHwAg&usg=AFQjCNHKGzgqCKDZ5nNF5qMrKHREPHKS0w&sig2=wwPpt5Q019mFcxWmR9iYsg&bvm=bv.56643336,d.aGc&cad=rjt

    3. Grub이전의 사항인 x86 post에 대한 사항  https://www.glamenv-septzen.net/en/view/6
      https://www.glamenv-septzen.net/view/614


  2. 서버 운영 시 각 소모품 관리는 어떻게 하고 있고, 그에 대한 비상 대책은?

  3. 서버 운영이 가용성 99.99%를 위해서 필요한 것은 무엇인가? 그 이유는? 참고로 회사 또는 고객은 예산이 없다.

  4. 최근에 끝낸 중요한 리눅스 프로젝트에 대해서 설명하시오. 어떤 장애물들이 있었는지, 어떻게 해결했는지 설명하시오.

  5. 최근에 자신이 한 가장 큰 실수는 무엇인지 얘기해보라. 지금이라면 어떻게 할 것인지 설명해보라. 이 경험으로 어떤 것을 배웠나? (실수는 누구나 하지만, 그로부터 반드시 무언가를 배우고 나아져야 한다.)

    1. 좀 옛날 얘기지만 http://blog.akpil.net/%EC%98%A4%EB%9E%98%EC%A0%84-%EC%9D%B4%EC%95%BC%EA%B8%B0-%EB%8C%80%ED%95%99-1%ED%95%99%EB%85%84%EB%95%8C-%EC%95%84%EB%A5%B4%EB%B0%94%EC%9D%B4%ED%8A%B8/

  6. 자신의 지식 데이터베이스를 어떻게 관리하는 지에 대해서 설명하시오. (위키, 엑셀, 메모장, 블로그 등) 왜 선택한 것을 사용하는 지에 대해서 설명하시오.

  7. 오픈소스 프로젝트에 기여한 적이 있는가? (어떤 형태로든...)

  8. 만약 당신이 단 5개의 커맨드 유틸리티만을 가지고 무인도에 갇혔다면, 어떤 유틸리티들을 선택할까? (예, ping, tcpdump, ps, lsof, strace... 관리자로서 어떤 툴을 가장 잘 쓰고 있는 지에 대해 알 수 있음. 1-5년차 대상. 사실 이건 정답 없음) (하)

    1. busybox

    2. 구글링의 내용 중에는 echo, mail... 또 다른 사람은 date, whoami, echo, sleep, kill. (+1)

    3. 쉘, vi, 그리고 tcc(tiny c compiler)

    4. busasu

    5. 꼭 필요한 커맨드라면.... strip; touch; finger; mount; umount;

  9. 기존에 백업 서버 구성을 해 본 적이 있었는지, 해 봤다면 어떤식으로 했었는지, 지금 하라고 하면 어떤식으로 할 것인지 이야기 해 보시오

    1. 어떤 경우에 대한 백업이냐고 물어보고 시작하면 가산점

  10. request당 요금을 받는 API 서비스를 하려 한다. request당 적정 요금은 어떻게 계산할 수 있을까?

    1. 어떤 API인지 물어보고 시작하면 가산점 (cpu-intensive인지, traffic-intensive 인지..)

  11. 본인이 경험했던 가장 어려웠던 기술적인 난관은 무엇이었나? - 극복 방법은? - 그로부터 얻을 수 있었던 교훈은? - 그 경험이 이 회사에서 어떤 도움이 될지?


7. Embeded Linux Development

  1. 이번 android kitkat에서 개선된 low memory kill feature에 대해서 기술하시오.

  2. SSD를 사용하는 경우 TRIM 기능은 무엇을 처리하는 기능인지 설명하시오.

    1. TRIM은 쓰기 속도를 높이기 위해서 데이터 삭제 처리를 해주는 기술입니다. HDD의 경우 덮어쓰기가 가능하지만, SSD는 저장 매체가 NAND Flash 메모리이기 때문에 덮어 쓰기가 안되고 반드시 해당 영역을 비운 다음에야 쓰기가 가능합니다.
      적절한 비유를 하자면.. 전세방을 살다가 돈 벌어서 집을 사가지고 이사짐 한트럭 싣고 기분 좋게 갔는데.. 집을 비워줘야할 사람이 아직 이사짐을 빼지 못한 상황이라고나 할까요? 상대방의 이사짐이 빠지기 전엔 내 이사짐을 넣을수가 없죠. 그러므로 해당영역을 비우는 작업(erase)를 하는 동안 만큼(이사짐이 빠질때까지) 쓰기속도가 떨어지게 됩니다.(나는 이사짐을 풀어 놓을수가 없습니다.) 이걸 방지하려면 지우는 작업중이 아닌,  이미 비어 있는 다른 영역에 쓰기작업을 먼저 하고 SSD 가 바쁘지 않은 시간에 적절하게 비우기 작업을 계속 해줍니다. <- 이걸 TRIM 이라고 합니다.
      더 현실적으로 접근하자면 HDD에서는 "지워질 데이터"라고 표시만 해두고 정말로 지우지는 않습니다. 지우는데도 시간이 걸리니까요. 그리고는 대용량 데이터가 들어오면 그때서야 덮어쓰기를 해서 진짜로 지웁니다. 하지만 SSD에서는 데이터를 삭제하면 진짜로 삭제를 해버립니다. 즉, 비우기(erase)를 먼저 해버립니다. <- 이게 TRIM 이죠.
      안그러면 나중에 더 큰 데이터를 복사할 때 미처 처리하지 못한 비우기를 하느라  쓰기 속도가 현저하게 떨어지게 됩니다.
      결론을 내리자면 TRIM은 Flash 메모리를 기반으로 하는 모든 저장장치에 구현되어 있어야 하는 기능입니다. 비싼 저장장치라면 내부적으로 구현되어 있는 경우도 있고, OS 수준에서 지원하는 경우도 있습니다.


    1. Windows는 CMOS 에서 AHCI 로 모드를 바꾼 후 (몇몇 모델은 EIDE 에서도 되지만 일반적으로는 잘 안됩니다. ) CMD 모드에서

C:\>fsutil behavior query DisableDeleteNotify

DisableDeleteNotify = 0

처럼 0 이 나오면 TRIM 이 작동하는 것이고 1 이 나오면 작동 안하는 겁니다.

(윈도즈 7)

1 로 나온다면

C:\>fsutil behavior query DisableDeleteNotify 0

라고 해주면 됩니다. 그래도 안되면 각 제작사의 애플리케이션을 다운로드 받아서 실행하면 됩니다.


    1. 리눅스에서는 ext4 파일시스템에 이미 구현되어 있습니다. /etc/fstab 파일에 ext4 옵션에 discard라고 적어주도록 되어 있습니다. 만약 구현되어 있지 않다면 수동으로 해줘야 할 텐데, 그건 사용자가 할 짓(?)이 못됩니다. by 유형목




8. Virtualization

  1. 리눅스에서 가상화를 어떻게 구현할 수 있는지 설명하시오

    1. kvm, xen 등을 설명해본다

    2. 써본 것 중에 어떤 게 어떤 서비스에서 좋았는지 ?

  2. 리눅스 가상화에서 전가상화와 반가상화는 어떻게 다른지

    1. Xen 하이퍼바이저에서 말하는 HVM과 KVM의 방식의 차이점은?

  3. 리눅스 가상화에서 반가상화 드라이버는 무엇인지 설명해주세요

  4. 리눅스 가상화에서 링 보호 개념이 무엇인지 설명하세요.

  5. 가상화 구현 시에 네트워크는 어떻게 사용 가능한지

  6. 가상화 구현 시에 storage 는 어떻게 사용 가능한지

  7. 리눅스를 가상화 서버에 올릴 때 어떤 점을 유의해야 할지

  8. 가상화의 장단점을 쓰시오

  9. 가상화 시 real 설비에 비해서 성능을 (이론적으로) 어느 정도까지 뽑아낼 수 있는지 ? 직접 작업하였다면 얼마까지 뽑아 보았는지 ? 어떠한 방법을 사용해서 그렇게 성능을 올렸는지 (또는 내렸는지) ?

  10. Full virtualization(전가상화)과 Paravirtualization(반가상화)을 비교 설명하시오.

  11. OpenStack KVM 설치 전후로 점검해야 할 항목이 있다면 어떤 것들인가?

  12. OpenStack KVM Live Migration을 위한 요구조건이 있다면 어떤 것들인가?

  13. OpenStack KVM Live Migration 문제 시 어떤 부분을 점검해보는 것이 필요할까?




9. Cloud Computing

    1. Docker에 대해서 설명해보세요. (Docker와 Docker Compose 및 Swarm, K8S의 구분)

    2. 기존의 VMware 같은 류의 프로그램과 다른 점이 무엇인가?

    3. 스토리지 장애가 생겼을 때를 대비해서 어떤 준비 또는 구성을 하는가?

    4. VM Guest 자동화는 어떻게 하는가?

    5. 타임서버를 사용하고 있지만, VM Guest 시간 동기화가 잘 안될 경우 해결 방법은?

    6. Chef, Puppet, ansible, cfengine 등 configuration management 자동화툴을 써본 경험을 이야기해보라Configuration management tool을 사용하는 이유는? (멱등성 이야기가 나오면 합격). configuration management 자동화 툴을 사용하는 이유는?

    7. VMware종류의 가상화 혹은, AWS,GCP,Azure,Softlayer의 Public Cloud 등상의 VM을 API로 배치하고 운영해본 경험을 이야기해보라.

    8. 가상화의 종류에 따른 장단점을 설명하라.

    9. I/O를 빠르게 하기 위해서는 어떻게 해야할까?

   10. Network을 어떻게 가상화할까?

   11. 여러 시스템을 배치할 때 보틀넥는 무엇인가?

   12. SDS(Software Defined Storage)의 기능 및 장단점에 대해 설명하라.

   13. Tiered Storage 구성시 가질 수 있는 장단점을 성능/기능 측면으로 나누어 설명하라.

   14. Public Cloud 와 Private Cloud가 어떤 차이점이 있는지 설명하십시요.

   15. IaaS, PaaS, SaaS의 정의와 차이점을 설명하십시요.

   16. Hybrid cloud를 구축하기 위한 방안으로 통합 콘솔을 지원하는 솔루션은?

   17. 클라우드 아키텍쳐에서 Auto-Scaling을 구축하기 위한 아키텍쳐의 기본 설계시 유의점은?

   18. PaaS 플렛폼에서 컨테이너 형태를 사용하기 위한 Application 설계시 고려사항은?

  19. MSA(Micro Service Architecture)에 대해서 설명을 하여 주십시요.

  20. Docker와 하이퍼바이저 기반 가상화의 차이점에 대해서 설명하십시요.

  21. Openstack을 이용하여 private cloud 구축시 Nova노드의 BIOS에서 NUMA기능은 사용것인 좋은가요?










* 질문은 Closed question 보다는 Open question의 형태가 더 좋습니다. 답변자가 문제에 대해서 어떤 식으로 답에 접근하는 지를 볼 수 있습니다. (단답형으로 네/아니오, 또는 ext3와 같이 답을 할 수 있는 질문은 답변자의 단편적인 지식만 알 수 있습니다.)




License

BPL by 박재화 (박재화님이 쏘십니다.)

                       -. 책 만들어지면 제가 쏩니다. 그전까진 못쏩니다. :-p (by 박재화^^)

-. 내용이 꽉 차면 세하마녀님이 책으로 만들 겁니다. (아마도 ?)