일반적인 유닉스 기술에 대한 인터뷰


20

* nix 쉘 경험이 있다고 주장하는 개발자를 어떻게 테스트하겠습니까 (명확하게 말하면, 누군가가 * nix에서 개발할 수 있는지 테스트하고 싶지는 않지만 명령 줄에서 자신의 길을 아는 것만 테스트하고 싶습니다).

고양이, grep, cut 등과 같은 기본 정보를 파이프와 결합하는 로그 파일에서 정보를 가져 오는 문제를 해결하도록 생각하고있었습니다.

다른 기본 지식은 무엇입니까? 다시 한 번, 이것은 * nix 시스템을 개발할 사람을 인터뷰하기위한 것이 아니라 * nix 시스템 관리자를위한 것이 아니라 때때로 * nix 시스템에서 일부 작업을 수행해야하는 일반 개발자를위한 것입니다.


이런 종류의 셸 교육은 이미 프로그래밍 언어를 알고있는 모든 사람을위한 케이크입니다. 인터뷰 대상자들이 이력서에서 진실을 좀 더 기쁘게 보이게 만들면 사람들은 언제 걱정합니까? 항상 일어난다. 사소한 소리.
얌 마르코비치

@YamMarcovic- "진실을 좀 더 유쾌하게 보이게한다"고 말할 때 "그들은 가지고 있지 않은 기술의 호평"을 말하는 것입니까? 당신이 있다면, 나는 그것이 인터뷰하는 동안 알아내는 것이 꽤 적절하다고 말하고 싶습니다. 그들이 문을 통과하기 위해 거짓말을한다면 어떻게 안으로 들어올 수 있을까요?
Vatine

@Vatine 적어도 내 경험으로는 모든 사람이 이력서에서 자신의 기술 수준을 과장하여 과장합니다. 당신이 그 사람들을 실격 시켰다면, 당신은 교리 적으로 정직하거나 순진한 사람들을 고용 할 수밖에 없습니다. 옵션이 훨씬 적습니다.
Yam Marcovic

답변:


13

* nix 시스템에서 작업하는 개인 경험 개발자는 다음을 알아야합니다.

  • 쉘 변수 (PATH와 같은 특수 변수에 대한 지식을 설정 / 얻는 방법)
  • 셸 리디렉션 (프로그램 출력 캡처)
  • 파이프 (로그 파일에서 일부 정보를 추출하는 것이 탁월한 예입니다)
  • 공정 제어 (ps, nice / renice, kill)
  • 파일 액세스 권한 (ls / chmod / chown / chattr)
  • 사용자 (그러나 대부분 파일 / 프로세스와 관련하여, 즉이 프로세스가이 파일에 액세스 할 수 있습니까? 왜 할 수 / 없는가?)

... 그리고 보너스로 :

  • 시스템 서비스 시작 / 중지

이러한 기술을 통해 대부분의 개발자 관련 작업을 쉽게 수행 할 수 있습니다.


좋은 대답입니다. 시스템 서비스를 시작 / 중지하는 데 어떤 명령이 사용됩니까?
Tim

11

나는 일에 시작한 이후 나의 수많은 동료들과 내 경험에서, 아무도 가짜 유닉스 지식 싶어하지 않는다 : 그들은 "중 하나를 명령 줄 주위에 그들의 방법을 알고 "또는 단순히 말을하지 "방법을!".

응시자가 유닉스 워크 스테이션에서 기꺼이 작업 할 것인지 물어보고 그가 bash를 얼마나 멀리 갈 수 있는지 말해 줄 수 있습니다. 그는 결국 몇 가지 명령의 이름을 지정할 것입니다. 가장 눈에 띄는 사람은 cd, cat, more또는 less, vi또는 emacs, grep, awk, sed. 그가 언급했는지 잘 들어라 man.

그것은 개발을위한 경우, 그는 잘 알고 있어야 make하고 메이크, 일부 소스 제어 명령 줄 인터페이스 ( svn, git, cleartool, hg, cvs...)


4
manGoogle에서 도움을받지 못할 때마다 알고 사용하지만 명령 목록에 표시하지는 않습니다.
Mehrdad

3
man오프라인 상태 일 때 unix 명령 행 및 C 라이브러리를 학습하는 가장 효율적인 방법입니다. 그건 그렇고, 인터넷 검색을위한 가장 진보 된 도구가 다음과 같을 때 유닉스를 배웠습니다telnet archie.cs.mcgill.ca
mouviciel


@mouviciel : 또한 온라인 상태 일 때 유닉스 커맨드 라인에 대해 배우는 것이 가장 효율적인 방법입니다. 대부분의 포럼은 명령에 대한 세부 정보를 요청하면 rtfm에게 '도움이 될 것입니다'. 매뉴얼 페이지가 엄청나게 복잡하지 않고 문서를 탐색하기 어려운 경우에는 괜찮습니다. 다행히도 스택 오버 플로우가 있습니다!
Joren

나는 그것에 대해 모른다. 나는 매뉴얼 페이지를 과도하게 사용하고 일단 익숙해지면 아무런 문제가 없었습니다. 당신이 찾고있는 것을 찾는 케이크 조각입니다. 섹션도 있고 "See Also"도 있고 버튼을 클릭하여 모든 것을 검색 할 수 있습니다. 모든 명령과 모든 syscall 및 상당히 많은 라이브러리 호출에 대한 매뉴얼 페이지가 제공됩니다. 맨 페이지가 유닉스를 정말 좋아하게 만드는 요소라고 말하고 싶습니다.
Yam Marcovic

10

왜 이렇게합니까?

* nix 쉘 (및 기타 OS 쉘, fwiw)은 매우 깊고 광범위한 작업 환경입니다. 누군가가 그곳에서 일하면서 몇 년을 보내고 쉘 용량의 아주 작은 % 만 사용할 수 있습니다.

사용자가 a) 셸 프로그램 또는 b) 셸에서 시스템을 관리하지 않을 것으로 예상되는 경우 왜 중요합니까? 수행되는 모든 것은 편리한 * nix 치트 시트가 "기술 부족"을 보상하는 것 이상의 기본 수준에있을 것입니다.


정직한 확인입니다. 누군가가 그들의 이력서에 실제로 유닉스 경험을한다면 (실제로 필요하지 않은), 나는 그 주장 된 기술이 무엇인지 확인할 수 있기를 원합니다. cd와 ls 만 사용할 수 있다면 유닉스 경험 imo를 주장해서는 안됩니다.
Christophe Vanfleteren

글쎄, 나는 그들이 어떤 유닉스 시스템을 사용했는지 물어보고 유닉스 시스템과 아마도 리눅스 / 맥의 차이점을 나열하게 할 것입니다.
johannes

1
@Christophe-글쎄, 여기에 거래가 있습니다 ... 그들은 아마 당신을 위해 작동하지 않기 때문에 중요하지 않습니다. 잠재적 고용주가 이력서의 내용을 믿지 않기 때문에 이와 같은 바보 같은 스턴트를 당기기 시작할 때 인터뷰 대상자에게 주요한 위험 신호입니다. 당신의 "테스트"와 당신의 정당성은 기본적으로 당신이 똥 회사에서 똥 일을하기 위해 누군가를 고용하려고한다고 말하는 것입니다. 내가 틀렸을 수도 있지만, 내가 아닌 것 같아요. 그러나 내가 틀렸다면 "예상"을 다시 평가하는 것이 좋습니다.
Joe Internet

1
@ 얌-그것은 이렇게 말합니다 ... 당신이 고용하고 누군가 당신이 생각하는 이력서를 보내면, 당신은 그 사람을 인터뷰하지 않습니다. 당신이 하지 않는 것은 a) 당신이 인정하는 것은 위치의 요구 사항과 관련이 없다는 것을 인정하는 바보 같은 테스트를 만들고 b) 누군가가 주장한 경험의 "정직"을 테스트하기 위해 설계된 것임을 인정하는 것입니다. 누군가가 * nix 쉘을 사용했다고 말했기 때문에 "정직"에 의문을 제기하지 않고 OP 회사에서 인터뷰를 할 수 없다면 회사에 대해 어떻게 말하는가? 나에게 그것은 똥 회사에서 똥 일이라고 말합니다. YMMV.
Joe Internet

1
@Christophe-유능한 * nix 프로그래머를 고용하고 있다면 IMO가 "명령 줄에서 자신의 길을 알고 있다고"가정합니다. 유능한 다른 OS 개발자를 고용하는 경우 IMO는 * nix 명령 줄 기술이 최소라고 가정합니다. 그룹 A는 테스트 할 필요가 없습니다. 그룹 B는 자동 실패를 겪는 이유는 무엇입니까? 소프트웨어 개발자를 고용하는 기준이 명령 줄을 얼마나 잘 사용하는지에 따라 결정되면 고용 프로세스에 결함이 있다고 생각합니다. 쉘 스크립팅이 그 위치의 주요 책임이라면 그것은 다를 것입니다.
Joe Internet

3

내 머리 꼭대기에서 아마 두 가지를 물어볼 것입니다.

  1. 이전에 * nix 명령 줄을 사용했을 때 신중하게 생각한 명령으로 많은 시간을 절약 한 사례가 발생 했습니까? 그렇다면 자세히 설명하십시오.

  2. * nix 명령 줄과 표준 Windows 데스크탑의 주요 차이점을 설명하십시오. 각각의 장단점은 무엇입니까?

분명히, 첫 번째는 명령 줄에 대한 지원자의 지식이 얼마나 깊은 지 알려줍니다. 그가 * nix에서 수년간 일했다면, 그에게 grep을했다고 자랑스럽게 말하지는 않을 것입니다. 그들이 정확한 명령을 기억할 것을 기대하지 말고 (그에 대한 맨 페이지가 항상 있음), 그들이 한 일에 대한 일반적인 생각.

두 번째 질문은 명령 행이 실제로 어떤 도구인지, 어떤 도구가 적합하지 않은지 이해하는지 확인합니다. 해머 사용법을 배우는 것은 쉽지만 해머가 적합하지 않은 경우 다른 도구로 전환하기가 훨씬 어렵습니다. 따라서이 질문은 * nix 박스 외부에서 지원자의 관점을 잘 보여주고, 지식을 바탕으로 점수를 매길 수있을만큼 충분히 개방되어 있습니다. ( "어 .. 창문에는 창문이 있습니다"와 같은 것에 답하는 것보다 더 나쁜 것은 없습니다)


2

그들이 원하는 것에 따라 다릅니다.

로그 파일에서 정보얻으 려면 cat + grep에 대한 제안이 완벽합니다. 나는 그것에 ls, cd 이하를 추가 할 것입니다.

그들이 약간의 편집 (예를 들어, 설정 파일에서) 을하기를 기대한다면 , vi 및 / 또는 emacs와 cp / mv / rm / mkdir과 ​​같은 것들에 대한 테스트를 추가하는 것이 합리적입니다.


1
vi 명령의 테스트,
esh,

1
글쎄, 그 사람이 구글에 도달하고 " vi 편집기 명령 " 과 같은 검색 필드에 입력하기 시작 하면 테스트가 90 %를 통과하는 것을 고려할 것입니다 :)
gnat

1

나는 그들이 emacs 또는 vi / m, tar, sed, e / f / grep, 다양한 컴파일러, 일부 쉘 스크립팅을 아는 것이 좋습니다. 아마도이 도구를 사용하여 파일을 열지 않고 한 파일에서 일부 코드를 가져 와서 다른 프로그램에 삽입해야하는 테스트를 실행할 수 있습니다. 그런 다음 사소한 오류가 발생하는 프로그램을 컴파일하십시오. 그런 다음 텍스트 편집기를 사용하여 오류를 찾아 코드를 작동시키고 바이너리를 보관해야합니다. 그런 다음 수신자에게 실행 권한을 부여하면서 어딘가에 메일을 보내십시오.


1

나는 당신에 대해 모른다. 그러나 나의 면접관이 나에게 물었고 Linux에서 작업하는 방법을 모른다면 약간 짜증이 날 것이다.

지금 당장 알고있는 것이 아니라 기회가 주어지면 배울있는 것에 신경 쓰지 않아야합니다 . * nix 도구를 배우는 것은 그리 어렵지 않지만 약간의 결정이 필요합니다. 지식보다는 능력을 실제로 테스트해야합니다.


2
그러나 당신은 배우지 않는 일을하기 위해 후보자를 인터뷰합니다
NoChance

1
-1 @Emmad. 그래서 당신은 당신이 가진 직업에서 아무것도 배우지 않았습니다 ...?

3
-1 @EmmadKareem 모든 작업이 어떤 식 으로든 배우고 있습니다.
Nicholas Smith

그렇습니다.하지만 그 역할이 사소한 것이 아니라면, 약 2 주 동안 후보자가 생산성을 발휘할 것으로 기대합니다. 캐나다에서는 평균적으로 3000 달러가들 것입니다! 기술이 드물지 않으면, 이것이 내가 기대하는 것입니다.
NoChance

엠마 드처럼 나는 OP와 함께 일하고 싶지 않은 사람입니다.
kirk.burleson

1

그것은 당신이 원하는 경험 수준에 달려 있습니다. 이것이 nix 시스템을 위해 개발할 사람이 아닌 * nix 시스템 관리자를위한 것이 아니라 때때로 * nix 시스템에서 일부 작업을 수행해야하는 일반 개발자를위한 것이라면 실제로 얼마나 많은 경험이 필요합니까?

* nix 쉘 (ls, chmod, cat 등)에서 개발자가 필요로하는 것은 단일 페이지 치트 시트에 작성 될 수 있습니다. 그렇다면 필요하지 않은 곳에 * nix 쉘 지식이 필요하면 좋은 후보를 제거 할 수 있습니다.


0

나는 보통 간단한 작업을 선택하고 그 사람에게 화이트 보드에 쉘 스크립트를 작성하도록 요청합니다.

""foo "디렉토리와"foo_backup "백업 디렉토리가 있습니다."foo_backup "이 변경된 이후"foo "에서 변경된 내용을 확인하는 쉘 스크립트를 작성하십시오.


0

‘리눅스에서 로그인 프로세스를 자세하게 설명하면 편안하게 느낄 수 있습니다.’는 좋은 질문입니다. 로그인 프로세스는 사용자, 권한 및 소유권, 많은 일반적인 Unix 철학 전환과 관련이 있습니다. 어떻게 '와 거기에 이유가 명확하게 설명 할 수있는 경우 /etc/passwd/etc/shadow, 어떻게 비 prived 사용자는'유닉스를 얻을 수 '가 의미하는 것이'자신의 암호가 아닌 다른 사람을 변경할 수 있습니다.

또 다른 좋은 방법은 로그 구문 분석 또는 빠른 보안 감사 기능이있는 것입니다. Apache 로그에서 특정 가상 호스트에 대해 제공되는 총 대역폭을 추가하거나 시스템에 uid가 0 인 시스템에 다른 사용자가 있는지 찾으면 명령 행에 편리합니다.

그리고 그들에게하지 말아야 할 한 가지 : 종이 / 화이트 보드에하지 마십시오. 그들에게 라이브 시스템을 제공하십시오 (그러나 거의 속임수이기 때문에 인터넷은 없습니다). 그들이 맨 페이지를 둘러보고 멀티 파이프 표현식을 즉석에서 만들 수 있다면 좋은 징조입니다. 그들이 모든 것을 위해 구글이 필요하다면, 그들의 스킬 셋은 의심 스럽다.


0

왜 그들이 기능적인 프로그램을 작성하게합니까? "grep과 sed의 차이점을 말해 주거나 X 명령이 무엇을 하는가?

그들이 당신이 그들에게 부여한 특정 임무에 대해 혼란스러워하는 경우, 그들이 똑똑하다고 생각하지 않을 수 있습니다. 그러나 일반적인 질문을하면, 그들이 알고있는 것을 보여줄 기회를줍니다.


-1

유닉스 전문가들은 sed, grep 등과 같은 핵심 명령 줄 명령을 한 손가락으로 가지고 있으며 모든 종류의 따옴표, 고급 정규 표현식 등을 사용하여 원하는 것을 쉽게 달성 할 수 있습니다. 따라서 때로는 스크립트를보고 생각합니다 중국어로 쓰여진 벌을 이해하기 쉽다;)

쉘 프로그래밍과 독립적으로 Perl과 같은 추가 스크립팅 언어를 하나 이상 알고있을 것으로 예상 할 수 있습니다.

그들은 Unix 시스템의 구성 내부를 알고 있으므로 키보드 레이아웃을 변경하도록 요청하면 (fg는 오른쪽 alt +에 바인딩을 추가합니다) 혼동되지 않습니다.

설치된 패키지를 관리해도 문제가 없습니다. 각각 다른 JVM과 함께 4 개의 응용 프로그램 서버를 실행하는 Oracle 설치-문제 없습니다. 가상 네트워크 구성, 고급 라우팅 및 포트 필터링, 가상 머신 등, 보안 관리도 가능합니다.


2
문제는 개발자가 Oracle과 Java에 특히 중점을 둔 전문가 시스템 관리자를 식별하지 않고 일반적인 Unix 기술을 보유하고 있는지 테스트하는 것입니다.
피터 테일러

JVN? 유태인 자원 봉사 네트워크는 이것과 어떤 관련이 있습니까?
옥도
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.