누구나 수정 가능한 모드로 바꿔두었습니다. :)

서식은 건들지 말아주세요.

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

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

* 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

License

1. System Administration

  1. 설치부터 서비스 구성까지 설정하시오 (리눅스 엔지니어 기술 면접이라면 수많은 지식도 중요하지만 실무 환경에서 어떻게 행동하고 어떻게 문제를 해결하면서 결과를 만들 수 있는지 확인하는 것이 더 중요하다고 생각합니다.) 설치부터 서비스 구성까지 제한 시간 없음.
  1. 리눅스 설치 CD, 서버 2대    
  2. 하드웨어 구성 정보 (OS : Raid 1 / Data : Raid 5 / Global hot spare 1ea)
  3. 리눅스 설치 정보(BIOS legacy mode 설치 1대, BIOS UEFI mode 설치 1대)
  4. 기술 면접 보고자 는 네트워크 설정과 서비스 설정 예시를 제공하고 구성하도록 자세한 정보를 제공합니다.(네트워크 스위치의 VLAN 설정 포함의 경우는 리눅스 엔지니어는 네트워크 엔지니어와 협력하여 수많은 문제를 풀어야 할 경우가 발생하므로 기본 네트워크 스위치에 대한 경험 및 설정을 할 수 있는지를 보기 위함입니다.)

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

  1. 리눅스 5년이상 면접자의 경우 위의 설치부터 서비스 구성까지 해결하는 것보다 2~4 시간안에 문제를 포기하고 집으로 돌아가는 경우가 많습니다.
    --- 노가다 잡부를 뽑으려고 작정한 난관인거 같습니다. 쉽지만, 뻔한거죠... 연봉은? ……
  2. 대답: 높은 연봉을 주려면 그만큼 일은 할 수 있는 능력이되는 사람인지 먼저 봐야 하지 않을까요? 기초부터 고급까지도 못하는데 높은 연봉을 바라는 엔지니어라면  
  3. 미국의 경우 엔지니어 레벨이 있고, 레벨이 높을 수록 기초 부분을 거쳐서 온 것이라고 인정을 합니다. 때문에 엔지니어 레벨이 높을 수록 억단위의 연봉을 받습니다. 경력자의 경우 높은 레벨을 뽑았을 때 그 만큼의 일을 못하면 2주 안에 해고 되던지 아니면 레벨과 함께 연봉 또한 내려갑니다. 한국에서는 어떻게 엔지니어 레벨을 확인하고 그 레벨을 얼마만큼 인정해 줄까요? 시간이 흘러 대리가 되고 과장이 되고 차장이 되는 그런 레벨이 아닌 자신이 레벨 1부터  상위 레벨까지 할 수 있는 능력을 말하는 것입니다. 미국의 시스템 엔지니어는 자신이 확인 해야 할 것이 있다고 생각되면 설치부터 구성까지 모두 하고 결과를 만들어 냅니다. (다소 불편한 이야기라면 관리자 분께서 저의 내용을 모두 삭제하셔도 됩니다. 몇몇의  리눅스 엔지니어는 실력보다는 연봉을 먼저 생각하는 것 같아서 답변을 남깁니다.)

`

  1. 상사가 당신보다 리눅스를 모르는데 일할 수 있는지 답하시오.
  2. 특수 파일의 MAJOR와 MINOR 번호가 무엇인지 설명하시오.
  1. 장치 파일에 할당된 번inor number는 driver에 할당된 여러 device들을 구분하기 위해 할당호. Major number는 device가 driver를 구분하기 위해 존재함. M됨.
  1. nscd가 무엇인지 설명하시오.
  2. 기록함. NIS+의 성능을 크게 개선시키며, DNS 작업도 도와줌.
  3. 특별히 사용하지 않을 경우 부수적인 로그를 발생시키므로 Disable 하는 것을 권장.
  1. 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[a][b][c][d][e]%26act%3DprocFileDownload%26file_srl%3D341660%26sid%3Ded20c756fdd3c8c6429e13e5484be5e2&ei=prCJUq-LG8qjiQeC-IGQAw&usg=AFQjCNFpWFLstgPvTagcYee0XYfGLC0GmQ&sig2=e1ee-2T5wdpZhWDWu-r0PA&bvm=bv.56643336,d.aGc&cad=rjt
  3. SAN : Storage Attached Network - iSCSI/FC 등의 네트워크 프로토콜을 바탕으로 DAS 와 비슷한 형태로 서비스를 제공하기 위한 스토리지 서비스 타입.
    NAS : Network Attached Storage - NFS 가 대표적으로, TCP/IP 프로토콜 레이어를 기반으로 이기종 또는 동종의 기계를 동일하게 하나의 스토리지로 사용 가능하게 하기 위해 제공되는 스토리지 서비스.
    DAS : Direct Attached Storage - 일반적인 하드디스크와 비슷한 형태로 제공되는, SCSI 프로토콜을 기반으로 하는 Direct Cable 연결이 된 독립적으로 제공되는 스토리지 서비스.
    차이점 : 형태의 차이와 장단점의 차이. 싱글 트러블 포인트를 갖고 가느냐, 멀티플랫폼으로 가느냐 등의 차이가 있을 수 있지만, 결국 상사가 돈을 얼마나 갖고있느냐의 차이.

 

  1. chroot에 대해서 설명하시오.
  1. http://en.wikipedia.org/wiki/Chroot
  2. Linux 의 최상위 디렉토리는 / 로 표현되고 시작되는데, 어떤 디렉토리에서든 해당 명령이 실행된 위치를 가장 최상위 / 디렉토리로 인식하게 해주는 커맨드.
    기존 파일시스템의 구조를 영향주지 않고 여러가지 다양한 시도(복구, 수정 등등)를 위해 사용되며, 상위 디렉토리의 보안을 보장하기 위한 용도로도 사용됨. 오래된 기술.

  1. 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. 엑설런트. 아래 글이 더이상 이 포맷으로 추가를 자동으로 못하게 해서 화가나서 가운데 남김.2자로 된 유닉스 명령어를 모두 말해보시오. 그것의 용도는 무엇인지 말해보시오. 2자로 된 명령어를 모두 찾을
    의문…...왜 이런질문을??? 한자로 된 명령어는 없어서인가요 ???
  2. find /usr/{bin,sbin} -name '??' -ls => total 58ea
  3. ‘cd’ 가 유닉스 명령어인지 아닌지에 대해서 언급 추가.

  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. 배포판마다도 다르고, 설정방법도 다르기도 해서 이건 사실 넘어가도 되는 질문이라고 판단됨. 필요한 상세 스펙이 있으면, 배포판 사이트를 참조하세요. 가 답일 될거 같음.
  3. https://access.redhat.com/solutions/1532



    Certified and [Maximum] (individual) file size

Filesystem

RHEL 3

RHEL 4

RHEL 5

RHEL 6

RHEL 7

EXT2/3

1TiB (3.0) 2TiB (3.5+)

2TiB

2TiB

2TiB

2TiB

EXT4

n/a

n/a

16TiB (5.6+)2

16TiB

16TiB

GFS1

2TiB

16TiB [8EiB]

16TiB [8EiB]

n/a

n/a

GFS2 1

n/a

n/a

100TiB (5.3+) [8EiB]

100TiB [8EiB]

100TiB [8EiB]

XFS 3

n/a

n/a

100TiB [8EiB]

100TiB [8EiB]

500TiB [8EiB]

Certified and [Maximum] filesystem size

Filesystm

RHEL 3

RHEL 4

RHEL 5

RHEL 6

RHEL 7

EXT2/3

1TiB (3.0) 2TiB(3.5+)[8TiB]

8TiB

8TiB (5.0), 16TiB (5.1+) 4

16TiB

16TiB

EXT4

n/a

n/a

16TiB [1EiB] (5.6+)2

16TiB [1EiB]

50TiB [1EiB]

GFS

2TiB

16TiB [8EiB]

16TiB [8EiB]

n/a

n/a

GFS2 1

n/a

n/a

100(5.3+)TiB [8EiB]

100TiB [8EiB]

100TiB [8EiB]

XFS 3

n/a

n/a

100TiB [16EiB]

100TiB [16EiB]

500TiB [16EiB]

  1. FUSE와 파일시스템의 차이는? 성능 차이를 무시하고라도 FUSE는 쓸만한가?
  1.  http://blog.naver.com/PostView.nhn?blogId=xogml_blog&logNo=130141202446
  2. 네, 쓸만 합니다. 리눅스 2.6.4X 이후로, 대부분의 파일시스템 레이어는 FUSE 로 넘어왔습니다. 물론 정확한 버전표기가 아닐 수 도 있습니다만, 이미 FUSE 는 ext3/4 를 넘어서는 차세대 파일시스템을 위한 하나의 레이어로 자리를 잡았습니다. 특히 질문대로, 성능차이를 무시하고 라면, 당연히 쓸만합니다.
  1. 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
  3. 구글 매니아, 구글 빠들은 그냥 BTRfs 써야함. B-tree 파일시스템이라는 점을 명심해야함.
    물론 리프에 대한 문제들이 나타나는 경우도 있긴 하지만, 피드백부족과 많이 사용안해서 생기는 문제이고, ZFS 랑 비교하는건 그냥 비슷해서인데, 전혀 다름. 왜 비교하는지 모르겠음. 사실 가장 먼저 출현한 것은 ZFS 이지만 그 사이에 Gluster 도 있고, DRDB 나 GFS 등도 있음. 전반적으로는 a 답변이 좋음.
  1. Device Tree에 대해서 아는 대로 얘기해보라.
  1. http://www.devicetree.org/Main_Page
  2. 먹는건가요?
  3. 바이너리로된 커널 설정파일. x86계열에서는 별 의미가 없고, 같은 회사 SoC라도 여러 종류의 바리에이션이 존재하는 ARM 계열에서 유용하게 쓰임. 이걸 잘 쓰면 커널 바이너리 하나로 여러 SoC를 커버할 수 있음.
  1. 새 디스크를 추가하면서 파일시스템을 변경하려고 한다. 이때 유의할 사항은?
    - 잘 모르겠습니다... 어떤 유의해야 할 점이 있는지 알려주시면 감사하겠습니다….이게 제일 어려웠습니다.1
  1. 새 디스크 추가에 따는 파일 시스템 변경이라면 현재 파일 시스템이 추가된 하드웨어 디스크 총 사이즈를 지원하지 못하기 때문에 파일 시스템을 변경해야하는 이유가 될 수 있지 않을까요?
  2. 일반적인 파일 시스템 변경시
  1. 어떤 파일 시스템에서 다른 파일 시스템으로 변경을 하려고 하는 것일까요? ext4 에서 xfs 파일 시스템..
  2. 파일 시스템을 변경해야하는 이유는 무엇일까요? NFS 서비스에 따른 ext4의 파일 시스템 불안정성 해결을 위한 xfs 파일 시스템, 또는 디스크 성능 평가를 했을 때 ext4 파일 시스템 보다 xfs 파일 시스템의 성능평가가 결과가 높아서
  3. 파일 시스템을 변경할 경우 기존의 내용을 백업 할 수 있는 여유 공간 및 백업 장치가 있는 것인가요? 네트워크 백업의 경우 백업 시간과 복구 시간이 얼마만큼 걸릴까요?  USB 백업의 경우 USB 3.0을 지원하지 않는 서버의 경우 어떻게 USB 3.0을 지원 할 수 있도록 하고 백업을 진행할 수 있을까요?  USB  3.0  PCIe 카드를 구입해서 서버에 설치한 후 백업을 진행합니다.
  1. Database Server 구성 시 data, index, log 저장을 나누는 것이 유리한가? 본인 대답에 대한 이유는?
    a. 디스크 상황 또는 서비스 상태에 따라서 다릅니다.
       데이타는 로그와도 비슷한 형태를 갖고 있을 수 있으며, Index 는 어떤 디비어플리케이션인지에 따라서 구지 구현하거나 따로 구성하지 않아도 되기 때문입니다. -_-
  2. 서버 아키텍처에서 NUMA의 장단점은?
  1. http://rockball.tistory.com/144
  2. Guarantees of high performance for high computing context switching jobs.
    정말 정밀한 하이컴퓨팅을 필요로하는 유전공항 시뮬레이션이나, 영상처리에서 가장 안정적인 프로세싱을 제공해주는것이 장점이라고 볼 수 있습니다.
    단점은, 일반 컴퓨팅환경에서는 상호간섭과 비슷한 효과를 발생하여, CPU 과부하나 시스템 행, 메모리 관리 실패등을 발생시킬 수 있습니다.
  3. 하이컴퓨팅 데이타베이스에서 사용해 봤습니다. OLTP 같은 것 이고, 주요 타겟 및 임무는 유전공학 관련이고, 그에 따른 시뮬레이션이였습니다.
  1. 좀비(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.)
  2. 죽여도 안죽는 프로세스. PCB 의 상태를 추적하는 컨텍스트를 상실한 더미 프로세스 또는 그렇게 된 프로세스.
  1. Shell 이란 무엇인가?
  1. http://math.ewha.ac.kr/~jylee/CompMath.html/unix2/ch3.html
  2. 인터렉티브 응용프로그램 로더
  1. 리눅스 서버에 원격으로 접근할 수 있는 방법과 장단점을 나열하시오.
  1. telnet, ssh, rsh, scp …
  1. load average (/proc/loadavg) 값은 각각 어떤 의미고 어떻게 해석해야 하는가
  1. 멀티코어인 경우에는?
  1. # rm -rf / 를 실행하면 어떤일이 발생하는가? (분위기 풀어주는 용도)
  1. 궁금해서 직접 해봤다고 하면 가산점
  1. 추가 질문. "정말 다 지워집니까?”

  1. 근래 국내에서 많이 사용하는 리눅스 배포본 몇 가지를 언급하고, 각 배포본의 특징들을 설명해보시오
     
  2. 새로 설치한 리눅스 서버가 막 부팅이 완료되었다. 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)
  1. 서버의 용도를 확인한 후 그에 맞는 설정들이 잘 되었는지 점검합니다.
  2. 점검 결과에 따라 새로 설치한 리눅스 서버가 정상 또는 비정상인지 결과를 만들어 냅니다.
  3. 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, …
  4. 서버 상태 확인, 기본 보안 설정 확인 및 적용, 등등…
  1. LVM structure에 대해서 설명해보시오.
  1. PV, VG, LV
  1. 기존 볼륨의 두번째 섹터 ( 엄밀히따지면 조금 더 후반 섹터이지만 면접보는형식으로 아무것도 검색안하고 대답하겠음. ) 이후에 Physical Volume 을 마킹하는 구조체를 찾고, PV 를 통해 VG 스트럭쳐를 메타데이타 형태로 설정 및 추가하고 LV 를 Logical configuration 에 기반하여 관리를 합니다. LV 는 논리적인 부분이기 때문에 아주 치명적인 상태가 아니면 충분히 이전설정을 통해 복구가 가능하고, VG 역시 메타데이타를 기반으로 복구가 가능한 형태로 구성됩니다. 런 레벨에 대해서설명해 보시오
    a. sysv 타입의 런레벨이라면, ARP 가 생기고 각 시스템의 레벨을 구분해야 했기 때문에 User 모드를 포함한 Runlevel 이 설정되고 생성되었습니다. 이를 Linux 가 창시되면서 sysv 모델을 따라가고자 했기 때문에 구체적인 Single, User, Multi 레벨의 3단계로 나누어진 SysV runlevel 이 생성되었고, 각각의 레벨마다 사용할 수 있는 환경을 제약하거나 조절하고자 하는 목적으로 디자인 되었습니다.
    이 질문은 왜 한건가요?

2. Kernel Internals

  1. 리눅스의 메모리 할당 방식에 대해서 설명하시오.
  1. kmalloc과 vmalloc의 차이점은 무엇인가?
  • https://kldp.org/node/114169
  • kmalloc은 메모리 할당 크기에 제한이 있고, 빠르게 할당되고..또 뭐가 있나..아..연속적인 공간으로 할당하고(DMA에 써먹는 용도로..) vmalloc은 크게 할당이 가능한 대신 느리고.. 기타 나머지는 생략.
  • kmalloc 은 kernel space 를 기준으로 연속적 관리가
  •  가능한 공간에 메모리를 할당하기 위해서 사용하는 것이고, vmalloc 은 꼭 연속적일 필요가 없는, virtual memory mapping 을 통해 자연할당 되어 프로그래밍 하는놈이 맘편하게 신경 끄고 싶을때 사용하는거임. 그냥 둘다 사실 별로 신경 안쓰고 써도 됨.
  1. /proc/slabinfo 를 설명하시오.
  • https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/s2-proc-slabinfo.html
  • Linux Memory Management 는 연속된 메모리를 할당하여 효율을 높이기 위해 일종의 블럭단위에 속하는 Slab 를 사용함. 우리가 옛날 판자촌에서 보던 슬라브랑 같은 개념임.
    그 슬라브처럼 연속된 부분을 겹처 사용하거나, 이어 사용할 수 있도록 Memory Management 에 대한 Object 를 설정한 것이 쉽게말해 Slab 임. 그걸 리스트화 하여 보여주고 트러블슈팅에 용이하도록 한 가상파일이 slabinfo 임.
  1. Semaphore와 mutex의 차이점은 무엇인가?
  1. 펌웨어(firmware) 업데이트를 하기 위해서 spi 통신을 쓰는데, 해당 모듈 통신 프로토콜을 설계할 때, 유의할 사항은?
        a. 재미없는 질문이라 답부터 올려줬으면 좋겠습니다. 원래 이 프로토콜을 리눅스에서 무조건 다 쓰는게 아닙니다. 기본적으로, 통신장비에서 시작된 프로토콜이기 때문에, 모든 펌웨어 관련하여 해당 프로토콜을 사용하지 않을 수 있고, 실제로 리눅스 커널을 살펴보고 확인하였습니다.
    펌웨어 업데이트는, 하드웨어에 가까운 기술지원이기 때문에, 꼭 리눅스 엔지니어 면접에 필요한 문항이라고 생각되지 않네요.
  2. 디바이스 드라이버 작성 시 콜드 부트(cold boot)와 웜부트(warm boot)를 구분해서 작성할 필요 있는가? 구체적인 시나리오를 기술하시오.
    a. 구분해서 작성할
    필요는 없습니다. 정확하게는 2.6 커널 이후부터는 콜드부트는 Section 으로 구분만 될 뿐 실제 코드를 넣지 않아도 동작하고 있습니다.
    3.x 이후의 커널에서는 해당 내용이 거의 없어졌습니다.
    임베디드에 속하는 이야기라면 경험이 미천하여 잘 모르겠으니, 고견을 부탁드립니다.
  3. 리눅스의 I/O 스케줄러에 대해 설명하시오.
  • http://www.linuxjournal.com/article/6931?page=0,0
  • NOOP, CFQ, Deadline, as 가 주되며, CFQ 는 커널 2.6 이후 도입됨.
    그냥 NOOP 는 HVM 기반 가상화에서 커널에서 신경 안쓰고 디바이스 자체로 그냥 들어오는대로 스케쥴링 처리를 하고 싶을때 , Deadline 은 커널에서 신경은 쓰는데, 그냥 시분할 컨텍스트에 맞춰 신경쓰고 싶을때, 가장 공평하게 하고 싶을때, 디비같은거에서 쓸때 쓰고, AS 는 무조건 건바이건으로 처리하고 싶을때….. CFQ 는 데드라인과 비슷한데, IRQ 큐를 갖고 커널에서 모든 프로세스마다 동일한 인터럽트를 처리하고자 할때 쓰는거임. 이것도 왜 물어보는지 정말 -_-
  1. 세마포어와 스핀락의 차이점에 대해서 설명하시오.
  • 세마포어는 어떤 자료 구조와 연계된 간단한 카운터로 모든 커널 스레드는 자료 구조에 접근하기 전에 해당 세마포어를 검사한다. 각 세마포어는 다음으로 구성된 한 객체이다.
  1. 정수 변수, 기다리고 있는 프로세스 목록, 두 개의 원자적인 메소드: down & up
  • 세마포어는 두 개 이상의 프로세스가 보호되고 있는 자원을 동시에 쓸 수 있다. 세마포어를 잡고 있는 프로세스는 sleep 가능하다.
  • 스핀락은 어떤 커널 자료 구조는 서로 다른 CPU에서 동작하는 커널 제어 경로가 동시에 접근하지 못하도록 해야 한다. 이 말은 스핀락은 어느 한 순간 단 하나의 프로세스만 자원을 쓸 수 있다. 스핀락을 잡고 있으면 그 프로세스는 sleep할 수 없다. 이때 자료 구조를 갱신하는데 필요한 시간이 짧으면 세마포어는 매우 비효율적이 된다. 유니프로세서 환경에서는 스핀락이 필요 없다.
  1. spinlock, semaphore의 차이점을 IT 비전공자가 이해하기 쉽게 설명하시오.
    - 비전공자에게는 설명할 수 없음. 전공에서 OS 이론에 나오는 이야기이기 때문임. 왜 설명해야함-_-
  2. [프로세스관리] context swtching에 대해 IT 비전공자가 이해하기 쉽게 설명하시오.
    - 비전공자에게는 설명할 수 없음. 전공에서 OS 이론에 나오는 이야기이기 때문임. 왜 설명해야함-_-
  3. 가상메모리에 대해 IT 비전공자가 이해하기 쉽게 설명하시오.
    - 비전공자에게는 설명할 수 없음. 전공에서 OS 이론에 나오는 이야기이기 때문임. 왜 설명해야함-_-
    아이티 업종이 아닌가 -_-
  4. 리눅스의 네임스페이스가 무엇인가?(가상화 관련/도커 컨테이너등에서 사용)
    - 리눅스는 네임스페이스가 없습니다. 커널스페이스와 유저스페이스만 나뉘어져 있죠. 커널 관련 질문에 이런 질문은…. 구지 따지자면,
    https://en.wikipedia.org/wiki/Linux_namespaces

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
  1. TCP, UDP, ICMP에 대해서 설명하시오. (중)
  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
  1. TIME_WAIT 상태는 왜 필요한가? (중)
  1. 서버와 클라이언트간의 세그먼트 전송중에 세그먼트 손실로 인한 최대 허용기다림을 위한 시간을 부여해서 안전한 데이터 전송을 가능하도록 하려는 것이라고 이해하면 된다. 이미 닫힌 소켓의 주소에 지연된 패킷이 도착할 경우, 서버가 완전히 닫기 위해 LAST_ACK 상태에 놓여있을 때 정상적인 경우라면 클라이언트 측에 보낸 마지막 ACK가 도착하고 연결이 종료가 되나, 중간에 네트워크 오류라든지 다양한 문제들로 ACK가 도착하지 않으면 서버는 다시 한 번 FIN을 재전송하게 된다. 하지만 클라이언트는 이미 종료했다고 가정했기 때문에 FIN을 수신할 소켓이 없다. 이렇게 되면 서버측은 계속 재전송하다가 제한된 재전송 수치를 넘기면 연결을 취소해야한다. 이것은 매우 비효율적이므로 클라이언트에서 닫힌 소켓을 잠시동안 TIME_WAIT 상태로 두고 지연된 패킷이나 재전송된 패킷들을 처리하도록 하는 것이다. TIME_WAIT 상태에서 재전송된 패킷을 받으면 응답하거나 버리거나 알아서 처리한다.
  2. http://zerobell.tistory.com/6
  1. TCP Half-open connection에 대해서 설명하시오. (중)
  1. http://en.wikipedia.org/wiki/TCP_half-open
  1. 서버에 설정된 네트워크 인터페이스 리스트와 라우팅 설정에 대해서 설명하시오
    -
  2. MTU 의 기본 값은 1500이다. 이를 바꿔야 하는 경우에 대해서 설명하시오
    - High performence 환경에서 점보프레임이 필요할 경우 일단 8000 이상으로 두어야 할 필요가 있음.
    이게 메모리를 consumpt 할 수 있으므로 적절한 관리가 필요. RDMA/IPoIB 등에서 이슈가 있을 수 있음.
    1500 부터 Router 의 경로에 따라 버퍼가 감소하므로 적절한 값을 찾기위한 튜닝포인트가 될 수 있음.
  3. MTU 의 값을 바꿔야 하는 경우를 어떻게 확인 가능한 지 설명하시오
    - 레드햇 퍼포먼스 튜닝 문서 참조. 혹은 과정 들으세요.
  4. IP의 서브넷 마스크 계산 방법은 어떻게 되는가?
    - 네트워크 엔지니어 뽑으신가 봅니다.. 전 패스하겠습니다. CIDR 싫어요.
  5. 유니캐스트 멀티 캐스트 브로드캐스트의 차이
  1. 이거 어떤 때 / 왜 사용 하는가?
  2. 나도 궁금.
  1. 데이터 센터 네트워크의 특징을 이야기 해보라
  1. 노스-사우스 트래픽과 이스트-웨스트 트래픽의 차이는?
  2. 동일 랙이 아닌 바로 옆의 랙으로 대용량의 트래픽이 발생해야 한다면 네트워크 토폴로지 전략은?
  • OP 불러서 따져요.
  1. 10페타바이트 백엔드 스토리지가 있다고 가정 할때 내부 네트워크 트래픽을 계산해보라. 스토리지와 네트워크와 컴퓨팅 노드들 간의 분산 전략은?
  2. 외부
  3. 트래픽 대응은?
    - CDN 쓰세요.망 분리는?
    - 업체 불러요.
  1. 프록시는 무엇인가?
  1. HTTP / SOCKS 4 / SOCKS5의 차이는?
  1. 로드밸런서는 무엇인가?
  1. 리버스 프록시와 차이는?
  2. L4/L7의 차이는? 소프트웨어 하드웨어 차이는?
  3. SSL 오프로딩이 무엇인가?
  1. CLOS 토폴로지가 무엇인가
  1. 이 토폴로지의  장점은 무엇인가
  2. 구현에 어떤 기술을 사용하는가?
  1. DSR 방식의 로드밸런서가 무엇이고 어떻게 구현이 되는가?
  1. L3 방식으로 구현 할수는 없나?
  2. 장점은 무엇인가? 왜 쓰는가?
  3. 설정할 때 주의 사항은?
  1. PoP는 무엇인가
  2. BGP가 무엇인가?
  1. AS의 개념은 무엇인가?
  2. BGP 와 IP의 관계는 어떻게 되는가?
  3. EBGP는?

4. Troubleshooting

  1. 시스템 Hang을 유발시키는 원인들을 얘기해보고, 그 중 하나에 대해서 설명해보시오.
  1. http://morenice.tistory.com/79
  2. 유저불량. 고객비밀 -_-
  1. 공유 라이브러리(shared library) 의존성은 어떻게 볼 수 있을까?
  1. http://blog.naver.com/PostView.nhn?blogId=hermet&logNo=87860867&parentCategoryNo=9&viewDate=&currentPage=1&listtype=0
  2.  ldd 스크립트 돌려보면 나오지.
  1. 시스템 콜과 시그널은 어떻게 트레이스할 수 있나?
  1. http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Development/Env/strace
  2. perf 나 dtrace 를 씁니다. 위에 글에서, 스트링 사이즈를 256 이상으로 지정하지 않고, 포크 프로세스를 감시하지 않는다면 쓸모 없는 글임을 명백하에 밝힙니다. 최소 strace -fvs 512 는 줘야함.
  1. "filesystem is full" 에러가 발생했다. 그러나 'df' 명령으로는 여전히 여유 공간이 있다고 나온다. 이 상황에 대해서 설명하시오.
  1. inode 부족일 경우가 있음. df -i 로 inode 상태를 확인
  2. 파일시스템 full인데도 df 쳐보면 용량이 남아 있다고 나오는건 root 가 작업할수 있는 파일시스템 여유공간을 남겨 놓기 때문에 그건거고..
  3. 파일시스템은 각각 종류별로 Reservation space 를 확보하고 만들어 놓습니다. 명확하게 어떤 상황과 어떤 파일시스템인지 명시할 필요가 있습니다. 이질문 누가한거 -_-
  1. 리눅스 커널이 OOM killer를 동작시켰을 때 어떤 일이 일어나나? OOM Killer가 가장 먼저 죽일 프로세스를 어떻게 선택하나? (상황에 따라 다르지만, 인터뷰이가 어떤 단서들로 답을 찾아가는지와 해당 프로세스를 어떻게 보호할 수 있는 지에 대해서 언급한다면 만족)
  1. http://seblog.mirr4u.com/581
  2. 창피합니다. 위에 글 누가 작성한건가요…. 지워주세요 쿨럭.
  1. 아파치 웹서버가 사용 중인 로그 파일을 삭제했다. 아직 아파치 웹서버를 재시작하지 않은 상태이다. 어떻게 로그 파일을 복구할 수 있을까?
  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/
  1. 덤프 분석과 관련된 질문[f]은 뭐가 있을까요?
    커널 panic 이 발생 되었고, 시스템을 재부팅 하여 환경은 복구 했다.
    이때 본인이 관련 커널 패닉의 발생된 원인이 무엇인지 어떻게 찾아 해결할것인가?
  1. kdump 프로세서 기동을 통한 core dump 파일이 생성 되도록 하고, 해당 이슈를 분석하는 방향으로….
    http://fedoraproject.org/wiki/How_to_use_kdump_to_debug_kernel_crashes
  2. Linux Vendor 에 SR 을 오픈하여 의뢰한다. (가르쳐주기 싫음!)
  3. 질문에 대해서 이야기하자면, kexec 툴을 설치해야 하는 이유는? 원리는? 왜 꼭 리부팅이 필요한지?   어떻게 커널은 크래쉬 상태에서 해당 상황에 대한 메모리 덤프를 수행할 수 있는 것인지? 그 여력이 있으면 왜 문제를 해결하거나 복구를 시도하지 않고 덤프만 수행하는지?
  1. 최대한 실서버와 동일한 환경에서 클라이언트를 테스트해야 한다. 하지만 실서버는 사용할 수 없고 클라이언트 코드도 freeze되어 테스트를 위한 어떤 변경도 할 수 없다. 어떤 전략을 사용하겠는가?
  1. dns 훼이크
  2. dtrace 및 ftrace
  1. HDD 가 갑자기 read-only 로 바뀌면서 서비스가 중단되었다면 어떻게 정상화 시킬 수 있을까 ?
    - fsck.

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

  1. Disk 용량이 80%, 90% 차는것에 대해 어떻게 대응을 할것인가?
    그리고 만약 알람을 설정을 했다면 왜 했고, 왜 그것에 대한 알람을 받아야 되는가?
  • 용도에 따라 다른 부분도 있고 여러 이유가 있을 수 있는데 좀 더 스페시픽하게 질문좀요 ㅠㅠ

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

         - 전부? 어떤건지 CVE 로 구체적으로 물어봐 주세요.

5. Performance & Tuning

  1. MPP 구성 시 (성능이) 균일하지 않은 CPU 노드 간 balancing은 어떻게 처리할까?
    a. RHEL 4 부터 제공되는 irqbalance 를 사용합니다. Oneshot 옵션은 한번만 처리하고 종료하는 깔끔함도 제공합니다.
  2. A와 B, 두 대의 시스템이 있다고 가정하자. 두 시스템은 정확히 똑같은 구성(OS, H/W, Memory, swap, configuration, applications, etc… 모든 구성이 똑같다.)이다. 그런데, A 시스템의 응답이 느리다. 반면에 B 시스템은 정상적인 응답을 보인다. 왜 그럴까? 어떻게 해결할 수 있을까?
  1. A 시스템에서 도는 프로세스 중 하나가 메모리를 잡아먹고 있는 듯 하다고 하면, 메모리 여유 공간이 충분하고, 그런 프로세스는 없다. 여전히 A 시스템은 느리다. 어쩌겠냐고 되물음.
  2. 본 질문은 면접자의 문제 해결 스킬에 대해 알아본다. 어플리케이션, DNS, 네트워크, 사용자 폭주, 클라이언트 설정 차이, 데이터베이스, 디스크 I/O, 데이터 손상 등등 많은 경우의 수에 대해서 설명하고 접근해나가는 것을 본다.
  3. 고객님 여기서 이러시면 아니됩니다 ;P

  1. 동일한 하드웨어 구성인데, 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
  1. HDD 가 sata1 으로 잡힌 것은 아닌지 확인 또는 HDD 케이블 확인
  2. samba 설정 파일 확인
  1. 아래 옵션에서 숫자를 점점 키워 보면서 확인
  2. socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=4096 SO_RCVBUF=4096
  1. 혹시 자잘한 파일이 많은지도 한번 확인 필요

  1. 사내 서버에 대한 보안 스캐닝을 어떻게 진행 할것인가?
    그리고 그에 대한 결과물에 따른 대응 처리는 어찌 할것인가?
  1. 관련 서비스 대상파악
  2. nmap, port스캐닝, 프로세서 별 데몬 체크
    nmap -sS -O -v

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

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

  1. 서버 운영 시 각 소모품 관리는 어떻게 하고 있고, 그에 대한 비상 대책은?
  2. 서버 운영이 가용성 99.99%를 위해서 필요한 것은 무엇인가? 그 이유는? 참고로 회사 또는 고객은 예산이 없다.
    a. 야근이 대책인가…..
  3. 최근에 끝낸 중요한 리눅스 프로젝트에 대해서 설명하시오. 어떤 장애물들이 있었는지, 어떻게 해결했는지 설명하시오.
  4. 최근에[g] 자신이 한 가장 큰 실수는 무엇인지 얘기해보라. 지금이라면 어떻게 할 것인지 설명해보라. 이 경험으로 어떤 것을 배웠나? (실수는 누구나 하지만, 그로부터 반드시 무언가를 배우고 나아져야 한다.)
  5. 자신의 지식 데이터베이스를 어떻게 관리하는 지에 대해서 설명하시오. (위키, 엑셀, 메모장, 블로그 등) 왜 선택한 것을 사용하는 지에 대해서 설명하시오.
  6. 오픈소스 프로젝트에 기여한 적이 있는가? (어떤 형태로든...)
  7. 만약 당신이 단 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;
  6. 컴터가 있다는거임? 야동보기바쁠듯. 아니면 kill.
  7. busybox 이거 하나면 다 되는거 아닌가요? 인터넷 있으면 apt apk yum 이런것도 좀.. ㅋㅋ
  1. 기존에 백업 서버 구성을 해 본 적이 있었는지, 해 봤다면 어떤식으로 했었는지, 지금 하라고 하면 어떤식으로 할 것인지 이야기 해 보시오
  1. 어떤 경우에 대한 백업이냐고 물어보고 시작하면 가산점
  1. request당 요금을 받는 API 서비스를 하려 한다. request당 적정 요금은 어떻게 계산할 수 있을까?
  1. 어떤 API인지 물어보고 시작하면 가산점 (cpu-intensive인지, traffic-intensive 인지..)
  1. 본인이 경험했던 가장 어려웠던 기술적인 난관은 무엇이었나? - 극복 방법은? - 그로부터 얻을 수 있었던 교훈은? - 그 경험이 이 회사에서 어떤 도움이 될지?

7. Embedded 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 유형목
  1. busybox가 무엇인가
  1. 왜 사용 하는가.
  1. MUSL 은 무엇인가.
  1. 왜 쓰는가
  2. libc 가 무엇인가.
  3. musl 과 glibc 간에 어떤 차이가 있는가?
  4. 바이너리 호환이 왜 안되는가.

8. Virtualization

  1. 리눅스에서 가상화를 어떻게 구현할 수 있는지 설명하시오
  1. kvm, xen 등을 설명해본다
  2. 써본 것 중에 어떤 게 어떤 서비스에서 좋았는지 ?
  3. lguest 에 대해서 아는지 물어본다.
  1. 가상화 구현 시에 네트워크는 어떻게 사용 가능한지
  2. 가상화 구현 시에 storage 는 어떻게 사용 가능한지
  3. 리눅스를 가상화 서버에 올릴 때 어떤 점을 유의해야 할지
  4. 가상화의 장단점을 쓰시오
  5. 가상화 시 real 설비에 비해서 성능을 (이론적으로) 어느 정도까지 뽑아낼 수 있는지 ? 직접 작업하였다면 얼마까지 뽑아 보았는지 ? 어떠한 방법을 사용해서 그렇게 성능을 올렸는지 (또는 내렸는지) ?
  6. Full virtualization(전가상화)과 Paravirtualization(반가상화)을 비교 설명하시오.
  7. OpenStack KVM 설치 전후로 점검해야 할 항목이 있다면 어떤 것들인가?
  8. OpenStack KVM Live Migration을 위한 요구조건이 있다면 어떤 것들인가?ㅑ
  9. OpenStack KVM Live Migration 문제 시 어떤 부분을 점검해보는 것이 필요할까?
    - 데이타의 보관주기 구별 가능. 각 시스템 또는 서비스간 I/O 간섭을 관리할 수 있음. 복잡한 스토리지 서비스 레벨이 필요함. 백업에 대한 추가적인 비용이 소요될 수 있음.,
  10. QEMU에서 KVM option의 의미를 설명하시오, 위 언급된 것외 알고 있는 hypervisor에서 대해서 기술하시오.
  11. SRIOV란 무엇인가? 구체적인 SRIOV 응용에 대한 예들 들어보시오.
  12. Virtualization 환경에서 Graphic Sharing이라는 무엇인가? X windows system에서 remote X server와 차이점은? 가능한 Graphic Sharing architecture에 대해서 기술하시오.[h]

9. Cloud Computing

  • Docker에 대해서 설명해보세요. (Docker와 Docker Compose 및 Swarm, K8S의 구분) (하)
  • 기존의 VMware 같은 류의 프로그램과 다른 점이 무엇인가?
  • Docker와 하이퍼바이저 기반 가상화의 차이점에 대해서 설명하십시요.
  • 스토리지 장애가 생겼을 때를 대비해서 어떤 준비 또는 구성을 하는가? (하)
  • VM Guest 자동화는 어떻게 하는가? (하)
  • 타임서버를 사용하고 있지만, 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)에 대해서 설명을 하여 주십시요.
  • 클라우드 서비스를 운영할 경우 온프레미스 시스템과 비교하여 가장 고려해야 할 것은? 그렇게 생각하는 이유는?
  • 클라우드와 온프레미스를 하이브리드로 구성할 경우 연결하는 방법은 어떤것들이 있는지? 주로 선호하는 연결 방법은?
  • 글로벌 서비스를 구현할 경우 해외 사용자의 사용성과 가장 직결되는 모니터링 항목은? (어떤 것을 중점적으로 모니터링 해야 하는지?)
  • 우리나라와 특정 국가 간 연결되는 아키텍쳐를 클라우드로 구성할 경우 어느 벤더를 사용하겠는가? 이유는?
  • 클라우드 벤더에서 사용하는 스토리지 종류와 종류 별 주요 사용 목적은?
  • 인스턴스 백업을 구현할 경우 어떻게 구현하겠는가? 그럴 경우 RTO와 RPO는?
  • IaC를 할 경우 어떤 소프트웨어를 가지고 어떻게 구현하겠는가?
  • CI/CD에 대하여 설명하고, 그것을 구현하기 위해서 먼저 준비되어야 할 것은 무엇인가?
  • Docker 로 구성된 인프라를 프로덕션 레벨로 사용하기 위해서 준비되어야 할 항목은 무엇이 있나?
  • 또는 컨테이너 모니터링을 하기 위해 사용해야 할 소프트웨어는 무엇이 있는가?
  • 서비스 디스커버리를 하기 위해서는 어떤 오케스트레이션 소프트웨어를 사용해야 하는가
  • 컨테이너에서 발생된 로그를 어떻게 저장하고 백업해야 하는가
  • Docker 에서 사용하는 파일시스템에 대하여 설명하고 일반적인 파일시스템과 다른점을 설명하라
  • 컨테이너 환경에서 사용할수 있는 오케스트레이션 도구를 제시해 보라
  • 사용 또는 설치 해본 적이 있는가?
  • SaaS / PaaS / FaaS 에 대해서 이야기 해보라.
  • 서버리스는 어떤 아키텍트에 해당하고 왜 사용 하는가?
  • GPU를 여러 사용자가 같이 사용 할수 있도록 가상화 할수 있는 방법이 무엇일까?
  • Docker 의 이미지 사이즈를 최적화 할수 있는 방법은 어떤 것이 있을까?
  • 리눅스 배포판을 새로 만든다고 가정할때 어떤 컴포넌트와 유틸리티, 라이브러리를 추가 하거나 삭제 할수 있을까? 이때 사용 하는 도구는?
  • 어떤 것을 제외 하는 것이 좋을까?
  • 아마존이나 기타 클라우드에서 맨 처음 부트 할 당시에 불러오는 설정은 어떤 것이 있는가?
  • 어떤 정보를 전달 할수 있는가?
  • 배포판 사이의 차이는?
  • 컨테이너 전용 운영체제에 대해서 알고 있는가?
  • 어떤 종류가 있는가?
  • 왜 쓰는가?
  • 어떤 장점 및 단점이 있는가?
  • 스태틱 컴파일된 바이너리가 왜 컨테이너 환경과 연관이 되는지 이야기 해보라.
  • immutable infrastructure가 무엇인가?
  • 예를 들어 보라.
  • 스케일 업/ 스케일 다운 / 스케일 인 / 스케일 아웃의 정의는 무엇이고 차이는 무엇인가?

     1. Docker에 대해서 설명해보세요.

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

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

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

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

     6. Chef, Puppet, ansible, cfengine 등 configuration management 자동화툴을 써본 경험을 이야기해보라. 

     7. VMware, AWS 등을 API로 배치하고 운영해본 경험을 이야기해보라. 

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

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

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

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

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

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

    14.

10. Security

  1. 시스템 설치 직후 초기설정을 그대로 쓰지 않는 예를 들어 보라
  1. 예) 디폴트 포트를 바꾸는 이유는?
  2. 보안시스템/솔루션이 없어서.
  1. 보안 감사 도구에는 어떠한 종류가 있는가.
  2. SELinux는 무엇이고, 장점과 단점은 어떤것이 있는가?
    a. SELinux 의 policy 를 생성해 보았는가?
    b. SELinux 의 Policy 를 관리하는 방법은 무엇인가?
    c. enforce 와 permissive 의 차이는?
    d. 솔직히 SELinux 잘 아는 친구 없다고 판단. RHCE/RHCA 정도면 대부분 충분할듯.
  3. 컨테이너의 경우는 어떤 방법으로 보안과 관련된 검사를 할수 있는가?
  4. 보통 컨테이너에 설치된 환경이 베어메탈에 설치된 환경 보다 안전하다고 이야기 하는데 왜 그런 이야기가 나올까?
  5. Vulnerability 의 정의가 무엇인가?
  1. CVE / NVD / NIST 가 무엇인가?
  2. 어떻게 확인 할수 있는가?
  1. 특정 배포판이 특정 CVE에 안전한지 여부를 어떻게 확신 할수 있는가?
  2. 배포판 업데이트 주기는 어떻게 가져 가야 한다고 생각하는가?
  3. 어떤 컴포넌트나 라이브러리가 안전함을 어떻게 확신 할수 있는가?
  1. 업데이트 주기는 어떻게 판단하나
  2. 외부와 내부가 분리된 망에서 어떻게 업데이트를 할수 있을까?
  1. 자바에서 사용하는 라이브러리의 보안 취약점을 실시간으로 확인 할수 있는 방법은 어떤 방법이 있는가?
  1. 이를 실시간 패치 하는 방법은?
  2. Oracle SR 을 오픈하세요. ;P
  1. 개발자가 특정 개발 도구(특정 버전 이상 등)을 사용 해야 한다고 할때 해당 배포판이 이를 지원하지 않으면 직접 컴파일해 쓰는 경우 보안에 어떤 위험이 있을까?
  1. 이를 어떤 방법으로 해결 할 수 있는가?
  1. 배포판의 LTS 등의 의미는 무엇인가?
  1. 각 배포판의 Long-term support 의 정책은 어떠한가?
  1. 지금 사용중인 배포판에 설치된 모든 패키지의 Vulnerability 의 Severity 를 어떻게 확인할 것인가?
  1. 전체를 업데이트 할 것인가?특정 패키지만 업데이트 하는 것이 좋다고 판단하는가?
  2. 예를 들어 특정 OS의 특정 버전을 고집하는 경우가 있다면 왜 그럴까.
    ex) RHEL 7.4가 배포가 되었음에도 불구하고 7.2를 사용하고 있는 경우.
  1. 당신이 판단하기에 현재 존재하는 배포판중에 가장 안전한(?) 배포판은 무엇인가?
  1. 컨테이너 전용 OS는?
  1. 망분리를 해야 한다고 할때 어떤 방법으로 구현 할 수 있을까?
  1. 조건: a/b/c/…..
  1. SSL 인증서의 종류는 어떤 것이 있는가?
  1. 인증서 체인 매커니즘을 이야기 해보라
  2. 왜 쓰는가?
  1. MITM 공격에 대해서 이야기 해보라.
  1. 어떻게 방지 할수 있는가?

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

License

BPL[i][j][k][l][m][n][o][p] by 박재화 (박재화님이 쏘십니다.)  - 이건 지우고 싶습니다. ㅠㅠ

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

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

[a]저 링크에 있는 내용을 추려서 답안을 따로 정리해넣는게 낫겠네요. 링크를 해놓으면 면접보다 찾아보긴 좀 거시기하니. ㅋㅋㅋ

[b]진심으로 이걸... 면접 때 쓸 생각을 하고 있다...

[c]_Marked as resolved_

[d]_Re-opened_

[e]면접때 쓸거야. ㅋㅋ

[f]덤프 종류도 여러가지 이겠지만, 일단 커널 덤프에 대해서 이야기를 물어보는게 맞을꺼 같아서 써봤어요.

좀더 깊숙히 들어갈수도 있지만 그 경우는 사례를 하나 만들어야 되지 않을까? 싶네여

[g]이 질문은 실제로 한 질문인데... 답변자가 실수 해본 적이 없다고 해서 당황한... -_-;

[h]virtualization관련 질문 추가

[i]근데, BPL은 뭔가요?

[j]밥 퍼블릭 라이센스

[k]OMG!

[l]실시간으로 달지 말라고.

[m]밥이 싫다면 비어 퍼블릭 라이센스

[n]뭐... 책 나오면... 쿨럭.

[o]일 년 지났다.

[p]그래, 밥 함 묵자. ㅋ