Phỏng vấn ai đó về các kỹ năng unix chung [đóng]


20

Làm thế nào bạn sẽ kiểm tra một nhà phát triển tuyên bố có trải nghiệm vỏ * nix (để rõ ràng, chúng tôi không muốn kiểm tra xem ai đó có thể phát triển trên * nix hay không, chỉ có họ biết cách của họ xung quanh dòng lệnh).

Tôi đã suy nghĩ về việc làm cho họ giải quyết vấn đề lấy thông tin ra khỏi tệp nhật ký, liên quan đến một số điều cơ bản như mèo, grep, cắt, ... kết hợp với đường ống.

Những kiến ​​thức cơ bản khác bạn sẽ yêu cầu? Một lần nữa, đây không phải là để phỏng vấn ai đó sẽ phát triển cho các hệ thống * nix và cũng không phải cho quản trị viên hệ thống * nix, mà chỉ dành cho các nhà phát triển thông thường đôi khi cần thực hiện một số công việc trên hệ thống * nix.


Loại đào tạo vỏ đó là bánh cho bất kỳ ai đã biết ngôn ngữ lập trình. Từ khi nào mọi người quan tâm nếu người được phỏng vấn làm cho sự thật có vẻ dễ chịu hơn một chút trong hồ sơ xin việc của họ? Lúc nào chả vậy. Âm thanh nhỏ với tôi.
Yam Marcovic

@YamMarcovic - Khi bạn nói "làm cho etruth có vẻ dễ chịu hơn một chút", bạn có nói "yêu cầu mức độ kỹ năng mà họ không có" không? Nếu là bạn, tôi muốn nói rằng điều đó khá phù hợp để tìm hiểu trong cuộc phỏng vấn. Nếu họ nói dối để qua cửa, làm sao người ta có thể tin họ một lần vào trong?
Vatine

@Vatine Bởi vì ít nhất từ ​​kinh nghiệm của tôi, mọi người đều phóng đại mức độ kỹ năng của họ trong sơ yếu lý lịch. Nếu bạn không đủ điều kiện cho những người đó, bạn sẽ bị thu hẹp trong việc thuê những người trung thực giáo điều hoặc những người ngây thơ. Đó là rất ít lựa chọn.
Yam Marcovic

Câu trả lời:


13

Từ kinh nghiệm cá nhân của tôi, nhà phát triển làm việc trên hệ thống * nix cần biết:

  • biến shell (cách đặt / nhận + kiến ​​thức về những biến đặc biệt như PATH)
  • chuyển hướng shell (bắt đầu ra của một chương trình)
  • ống dẫn (trích xuất một số thông tin từ tệp nhật ký là một ví dụ xuất sắc)
  • kiểm soát quá trình (ps, tốt đẹp / gia hạn, giết)
  • quyền truy cập tệp (ls / chmod / chown / chattr)
  • người dùng (nhưng chủ yếu là trong ngữ cảnh của tệp / quy trình, nghĩa là: quá trình này có thể truy cập tệp này không? tại sao nó có thể / không thể?)

... Và như một phần thưởng:

  • bắt đầu / dừng dịch vụ hệ thống

Một bộ kỹ năng như vậy cho phép thực hiện hầu hết các nhiệm vụ liên quan đến nhà phát triển một cách dễ dàng.


Câu trả lời tốt đẹp. Những lệnh nào được sử dụng để bắt đầu / dừng dịch vụ hệ thống?
Tim

11

Từ kinh nghiệm của tôi với nhiều đồng nghiệp của tôi kể từ khi tôi bắt đầu làm việc, không ai muốn giả mạo kiến ​​thức về Unix: hoặc họ " biết cách của họ xung quanh dòng lệnh " hoặc họ chỉ đơn giản nói "không thể nào!".

Chỉ cần hỏi xem ứng viên có sẵn sàng làm việc trên máy trạm Unix không và để anh ta nói cho bạn biết anh ta có thể đi được bao xa. Cuối cùng anh ta sẽ đặt tên cho một số lệnh; những người rõ ràng nhất là cd, cat, morehay less, vihoặc emacs, grep, awk, sed. Lắng nghe cẩn thận cho dù anh ấy đề cập man.

Nếu nó là dành cho phát triển, ông nên làm quen với makevà Makefiles, và một số giao diện điều khiển nguồn dòng lệnh ( svn, git, cleartool, hg, cvs...)


4
Tôi biết manvà tôi sử dụng nó bất cứ khi nào Google không giúp đỡ, nhưng tôi sẽ không bao giờ đưa nó vào danh sách các lệnh của mình ...
Mehrdad

3
manlà cách hiệu quả nhất để tìm hiểu về unix dòng lệnh và thư viện C khi bạn ngoại tuyến. Nhân tiện, tôi đã học được Unix khi công cụ tiên tiến nhất để tìm kiếm trên internet làtelnet archie.cs.mcgill.ca
mouviciel


@mouviciel: Đây cũng là cách học hiệu quả nhất về dòng lệnh unix khi bạn trực tuyến , vì hầu hết các diễn đàn sẽ 'nói một cách hữu ích' cho bạn biết rtfm nếu bạn hỏi họ chi tiết về các lệnh. Điều này sẽ ổn nếu các trang của người đàn ông không phức tạp và khó điều hướng tài liệu. May mắn thay, có stackoverflow!
Joren

Tôi không biết về điều đó. Tôi sử dụng trang man quá mức và tôi chưa bao giờ gặp vấn đề gì với nó một khi tôi đã quen với nó. Đó là một miếng bánh để tìm thấy những gì bạn đang tìm kiếm. Bạn có các phần, bạn có "Xem thêm" và bạn có thể tìm kiếm toàn bộ với một nút bấm. Bạn nhận được một trang man cho mọi lệnh và mọi tòa nhà, và khá nhiều cuộc gọi thư viện. Tôi muốn nói rằng các trang dành cho nam giới là thứ khiến tôi yêu thích UNIX rất nhiều.
Yam Marcovic

10

Tại sao làm điều này?

Các shell * nix (và các shell OS khác, fwiw) là các môi trường làm việc rất sâu và rộng. Ai đó có thể dành nhiều năm làm việc ở đó và chỉ sử dụng một phần rất nhỏ công suất của đạn pháo.

Nếu bạn không mong đợi người đó sẽ a) chương trình shell hoặc b) quản trị hệ thống từ shell, thì tại sao nó lại quan trọng? Bất cứ điều gì được thực hiện sẽ ở mức cơ bản đến mức một bảng cheat * nix tiện dụng sẽ nhiều hơn bù đắp cho "thiếu kỹ năng".


Đó là một kiểm tra trung thực. Nếu ai đó đưa kinh nghiệm unix vào sơ yếu lý lịch của họ (mà chúng tôi không thực sự yêu cầu), tôi muốn có thể kiểm tra những kỹ năng được yêu cầu đó là gì. Nếu bạn chỉ có thể sử dụng cd và ls, bạn không nên yêu cầu uno trải nghiệm imo.
Barshe Vanfleteren

Chà, sau đó tôi hỏi họ những hệ thống Unix nào họ đã sử dụng và họ liệt kê sự khác biệt giữa các hệ thống Unix và có lẽ là Linux / Mac
johannes

1
@Christophe - Chà, đây là thỏa thuận ... không thành vấn đề, vì có lẽ họ sẽ không làm việc cho bạn. Đó là một lá cờ đỏ lớn cho một người được phỏng vấn khi nhà tuyển dụng tiềm năng bắt đầu thực hiện những pha nguy hiểm ngớ ngẩn như thế này vì họ không tin vào những gì trong bản lý lịch. "Bài kiểm tra" của bạn, và lời biện minh của bạn cho nó, về cơ bản nói rằng bạn đang cố gắng thuê ai đó để làm một công việc tồi tệ tại một công ty tồi tệ. Tôi có thể sai, nhưng tôi đoán rằng tôi không phải. Tuy nhiên, nếu tôi sai, tôi khuyên bạn nên đánh giá lại "kỳ vọng" của mình.
Joe Internet

1
@Yam - Nó nói như thế này ... nếu bạn đang tuyển dụng và ai đó gửi cho bạn một bản lý lịch mà bạn tin là bị chiếm đoạt, bạn chỉ không phỏng vấn người đó. Những gì bạn không làm là tạo ra một số thử nghiệm ngớ ngẩn rằng a) bạn thừa nhận không có liên quan đến các yêu cầu của vị trí và b) thừa nhận rằng nó chỉ được thiết kế để kiểm tra "tính trung thực" của kinh nghiệm được tuyên bố của ai đó. Nếu ai đó thậm chí không thể có được một cuộc phỏng vấn tại công ty của OP mà không có câu hỏi về "sự trung thực" của họ bởi vì họ nói rằng họ đã sử dụng vỏ * nix, điều đó nói gì về công ty? Đối với tôi, nó nói công việc shit tại công ty shit. YMMV.
Joe Internet

1
@Christophe - Nếu bạn đang tuyển dụng các lập trình viên có khả năng * nix, IMO thật công bằng khi cho rằng họ "rằng họ biết cách của họ xung quanh dòng lệnh". Nếu bạn đang thuê các nhà phát triển hệ điều hành có khả năng khác, IMO sẽ công bằng khi cho rằng các kỹ năng dòng lệnh * nix của họ là tối thiểu. Nhóm A không cần phải kiểm tra, nhóm B bị lỗi tự động, vậy tại sao lại phải kiểm tra chúng? Nếu tiêu chí của bạn để thuê một nhà phát triển phần mềm dựa trên mức độ họ sử dụng dòng lệnh, thì tôi nghĩ rằng quy trình tuyển dụng của bạn là thiếu sót. Sẽ khác nếu kịch bản shell là trách nhiệm chính của vị trí này.
Joe Internet

3

Ra khỏi đỉnh đầu tôi có lẽ sẽ hỏi họ hai điều:

  1. Khi bạn sử dụng dòng lệnh * nix trước đây, bạn có gặp phải trường hợp nào không, trong đó một lệnh được suy nghĩ kỹ giúp bạn tiết kiệm rất nhiều thời gian? Nếu vậy, công phu.

  2. Vui lòng giải thích sự khác biệt chính giữa dòng lệnh * nix và máy tính để bàn Windows tiêu chuẩn. Ưu điểm và nhược điểm của mỗi là gì?

Rõ ràng, điều đầu tiên sẽ cho bạn một dấu hiệu về mức độ hiểu biết của người nộp đơn về dòng lệnh. Nếu anh ta làm việc nhiều năm trên một * nix, anh ta sẽ không nói với bạn rằng anh ta tự hào vì đã điều hành một grep. Tất nhiên, đừng mong họ nhớ các lệnh chính xác (luôn có các trang dành cho việc đó), nhưng ý tưởng chung về những gì họ đã làm.

Câu hỏi thứ hai thay vì kiểm tra xem họ có hiểu dòng lệnh nào thực sự tốt hay không và nó không phải là một công cụ phù hợp. Thật dễ dàng để học cách sử dụng búa, nhưng khó hơn nhiều để chuyển sang một công cụ khác trong trường hợp búa không phù hợp. Vì vậy, câu hỏi này cung cấp cho bạn một dấu hiệu tốt về quan điểm của người nộp đơn bên ngoài hộp * nix, cộng với nó đủ mở để anh ta có thể (và nên) ghi điểm với kiến ​​thức của mình. (Không có gì tệ hơn là trả lời một cái gì đó như "uh .. windows có những cửa sổ đó")


2

Phụ thuộc vào những gì bạn muốn họ làm.

Để lấy thông tin ra khỏi tệp nhật ký đề xuất của bạn cho cat + grep có ý nghĩa hoàn hảo. Tôi sẽ thêm ls, cd và ít hơn / nhiều hơn vào đó.

Nếu bạn mong đợi họ cũng thực hiện một số chỉnh sửa nhỏ (giả sử trong tệp cấu hình), thì việc thêm kiểm tra cho vi và / hoặc emacs cũng như các công cụ như cp / mv / rm / mkdir sẽ có ý nghĩa.


1
kiểm tra các lệnh vi, sheesh, tôi sẽ lo lắng hơn nếu họ biết tất cả
NimChimpsky

1
tốt, nếu anh chàng tìm đến Google và bắt đầu nhập nội dung vào trường tìm kiếm như " lệnh vi Editor " thì tôi sẽ xem xét việc kiểm tra đã vượt qua 90% :)
gnat

1

Tôi khuyên họ nên biết emacs hoặc vi / m, tar, sed, e / f / grep, các trình biên dịch khác nhau, một số kịch bản shell. Có lẽ chạy thử nghiệm trong đó họ phải sử dụng các công cụ này để lấy một số mã từ một tệp mà không cần mở nó, chèn nó vào một chương trình khác; sau đó biên dịch chương trình sẽ phá vỡ một số lỗi nhỏ. Sau đó, họ cần sử dụng một trình soạn thảo văn bản để đi vào và tìm lỗi, để mã làm việc và lưu trữ nhị phân. Sau đó gửi thư ở đâu đó trong khi cấp quyền cho người nhận để chạy nó.


1

Tôi không biết về bạn, nhưng tôi cảm thấy khó chịu nếu người phỏng vấn hỏi tôi và tôi không biết cách làm việc trên Linux.

Bạn không nên thực sự quan tâm đến những gì họ biết ngay bây giờ , nhưng những gì họ có thể học nếu có cơ hội. Học các công cụ nix không quá khó nhưng cần một chút quyết tâm - bạn thực sự nên kiểm tra khả năng hơn là kiến ​​thức.


2
nhưng bạn phỏng vấn ứng viên để làm việc không phải để học.
NoChance

1
-1 @Emmad. Vì vậy, bạn chưa bao giờ học được bất cứ điều gì trong bất kỳ công việc bạn đã có ...?

3
-1 @EmmadKareem tất cả công việc đang học theo một cách nào đó.
Nicholas Smith

Có học tập được dự kiến ​​ở một mức độ nào đó, tuy nhiên, trừ khi vai trò là tầm thường, tôi hy vọng ứng viên sẽ làm việc hiệu quả trong khoảng 2 tuần tuyển dụng, trung bình ở Canada, điều này sẽ tiêu tốn của tôi 3000 đô la! Trừ khi kỹ năng là hiếm, đây là những gì tôi mong đợi.
NoChance

Âm thanh như Emmad là một người tôi sẽ không muốn làm việc cùng với OP.
kirk.burleson

1

Nó phụ thuộc vào mức độ kinh nghiệm bạn muốn họ có. NẾU điều này không dành cho ai đó sẽ phát triển cho các hệ thống * nix và cũng không phải cho quản trị viên hệ thống * nix, mà chỉ dành cho các nhà phát triển thông thường đôi khi cần thực hiện một số công việc trên hệ thống * nix, họ thực sự cần bao nhiêu kinh nghiệm?

Bất cứ điều gì một nhà phát triển như vậy có thể cần trong các vỏ * nix (ls, chmod, cat, v.v.) có thể có thể được viết trên một trang cheat sheet. Nếu vậy, yêu cầu kiến ​​thức vỏ * nix khi không yêu cầu có thể loại bỏ một số ứng cử viên tốt.


0

Tôi thường chọn một nhiệm vụ đơn giản và yêu cầu người đó viết kịch bản shell trên bảng trắng.

"Bạn có một thư mục" foo "và một thư mục sao lưu" foo_backup ". Viết một tập lệnh shell để xem những gì đã thay đổi trong" foo "vì" foo_backup "đã thay đổi.


0

'Giải thích quá trình đăng nhập trong Linux, với nhiều chi tiết mà bạn cảm thấy thoải mái' là một câu hỏi hay. Quá trình đăng nhập xảy ra liên quan đến việc chuyển đổi người dùng, quyền và quyền sở hữu và rất nhiều triết lý Unix nói chung. Nếu họ có thể giải thích rõ ràng về cách thức và lý do tại sao có một /etc/passwd/etc/shadow , và làm thế nào một người dùng không có quyền riêng tư có thể thay đổi mật khẩu của riêng họ chứ không phải người khác ', điều đó có nghĩa là họ' hiểu 'Unix.

Một điều tốt nữa là bất cứ điều gì với phân tích cú pháp đăng nhập, hoặc kiểm toán bảo mật nhanh chóng. Nếu họ có thể tăng tổng băng thông được cung cấp cho một vhost cụ thể ra khỏi nhật ký Apache hoặc tìm xem có bất kỳ người dùng nào khác trong hệ thống có uid bằng 0 hay không, họ sẽ có ích trên dòng lệnh.

Và một điều KHÔNG nên làm với họ: đừng bắt họ làm điều đó trên giấy / bảng trắng. Cung cấp cho họ một hệ thống trực tiếp (nhưng không có internet vì điều đó gần như gian lận) và xem họ đi. Nếu họ biết cách của họ xung quanh các trang người đàn ông và có thể xây dựng các biểu thức đa ống một cách nhanh chóng, đó là một dấu hiệu tốt. Nếu họ cần google cho tất cả mọi thứ, thì bộ kỹ năng của họ là nghi vấn.


0

Tại sao làm cho họ viết một chương trình chức năng? Có gì sai khi nói "cho tôi biết sự khác biệt giữa grep và sed, hoặc lệnh X làm gì? v.v. theo cách đó, bạn có thể dẫn họ đi loanh quanh một chút.

nếu họ dò dẫm vào nhiệm vụ cụ thể mà bạn giao cho họ, bạn có thể không nghĩ họ thông minh. nhưng nếu bạn hỏi những câu hỏi chung chung, bạn cho họ cơ hội để cho bạn thấy những gì họ biết, điều này có thể đáng kể nhưng theo một cách khác so với những gì bạn đang tự hỏi.


-1

Các chuyên gia Unix có các lệnh dòng lệnh cốt lõi như sed, grep, v.v. trong một ngón tay và có thể dễ dàng sử dụng chúng để đạt được những gì họ muốn, sử dụng tất cả các loại trích dẫn, biểu thức chính quy nâng cao, v.v., vì vậy đôi khi bạn nhìn thấy tập lệnh và nghĩ rằng nó sẽ như vậy dễ hiểu hơn là nuôi ong viết bằng tiếng Trung Quốc;)

Bạn có thể mong đợi rằng, độc lập với lập trình shell, họ sẽ biết ít nhất một ngôn ngữ kịch bản bổ sung, chẳng hạn như Perl.

Họ sẽ biết các cấu hình bên trong của hệ thống Unix, vì vậy nếu bạn yêu cầu họ thay đổi bố cục bàn phím (fg thêm một số ràng buộc vào bên phải +) thì họ sẽ không bị nhầm lẫn.

Quản lý các gói cài đặt cũng sẽ không có vấn đề. Cài đặt Oracle, chạy 4 máy chủ ứng dụng, mỗi máy chủ có JVM khác - cũng không có vấn đề gì. Cấu hình mạng ảo, định tuyến và lọc cổng tiên tiến, máy ảo, v.v., quản lý bảo mật - cũng có ở đó.


2
Câu hỏi là về việc kiểm tra xem một nhà phát triển có các kỹ năng Unix nói chung hay không, không xác định các sysadins guru có trọng tâm đặc biệt về Oracle và Java.
Peter Taylor

JVN? Mạng lưới tình nguyện Do Thái phải làm gì với điều này?
ocodo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.