การสัมภาษณ์ผู้ที่มีทักษะ unix ทั่วไป [ปิด]


20

คุณจะทดสอบนักพัฒนาที่อ้างว่ามีประสบการณ์เชลล์ * nix อย่างไร (เพื่อให้ชัดเจนเราไม่ต้องการทดสอบว่ามีใครสามารถพัฒนาบน * ระวังได้เฉพาะเมื่อพวกเขารู้วิธีรอบบรรทัดคำสั่ง)

ฉันกำลังคิดที่จะทำให้พวกเขาแก้ปัญหาการลบข้อมูลออกจากไฟล์บันทึกซึ่งจะเกี่ยวข้องกับพื้นฐานบางอย่างเช่น cat, grep, cut, ... รวมกับ piping

คุณต้องการความรู้พื้นฐานอะไรอีก นี่ไม่ใช่สำหรับการสัมภาษณ์คนที่จะพัฒนาสำหรับระบบ * nix และไม่ใช่สำหรับผู้ดูแลระบบ * nix แต่สำหรับนักพัฒนาทั่วไปที่บางครั้งต้องทำงานบางอย่างในระบบ * nix


การฝึกฝนเชลล์ชนิดนั้นเป็นเค้กสำหรับคนที่รู้ภาษาการเขียนโปรแกรมอยู่แล้ว ตั้งแต่เมื่อไหร่ที่ผู้คนสนใจถ้าผู้ให้สัมภาษณ์ทำให้ความจริงดูจะน่าพอใจขึ้นในประวัติย่อ มันเกิดขึ้นตลอดเวลา ฟังดูแปลก ๆ สำหรับฉัน
Yam Marcovic

@YMMarcovic - เมื่อคุณพูดว่า "ทำให้สิ่งที่ดูเหมือนว่าเป็นที่ชื่นชอบมากขึ้น" คุณพูดว่า "อ้างทักษะระดับที่พวกเขาไม่มี" หรือไม่? ถ้าคุณเป็นฉันจะบอกว่ามันค่อนข้างเกี่ยวข้องกับการหาข้อมูลในระหว่างการสัมภาษณ์ หากพวกเขาโกหกที่จะผ่านประตูไปใครจะเชื่อใจพวกเขาได้อีกครั้งหนึ่งข้างใน?
Vatine

@Vatine เพราะอย่างน้อยจากประสบการณ์ของฉันทุกคนพูดเกินจริงเกินระดับทักษะของพวกเขาในการดำเนินการต่อ หากคุณตัดสิทธิ์ผู้คนเหล่านั้นคุณจะถูก จำกัด ให้แคบลงเพื่อจ้างคนซื่อสัตย์ซื่อตรงหรือไร้เดียงสา นั่นเป็นตัวเลือกที่น้อยกว่ามาก
Yam Marcovic

คำตอบ:


13

จากนักพัฒนาประสบการณ์ส่วนตัวของฉันที่ทำงานกับระบบ * ระวังต้องรู้:

  • ตัวแปรเชลล์ (วิธีตั้งค่า / รับ + ​​ความรู้เกี่ยวกับสิ่งพิเศษเช่น PATH)
  • เปลี่ยนเส้นทางเชลล์ (จับผลลัพธ์ของโปรแกรม)
  • ไพพ์ (การดึงข้อมูลบางอย่างจากไฟล์บันทึกเป็นตัวอย่างที่ยอดเยี่ยม)
  • การควบคุมกระบวนการ (ps, nice / renice, kill)
  • สิทธิ์การเข้าถึงไฟล์ (ls / chmod / chown / chattr)
  • ผู้ใช้ (แต่ส่วนใหญ่อยู่ในบริบทของไฟล์ / กระบวนการเช่น: กระบวนการนี้สามารถเข้าถึงไฟล์นี้ได้หรือไม่เพราะเหตุใดจึงสามารถ / ไม่ได้)

... และเป็นโบนัส:

  • บริการเริ่ม / หยุดระบบ

ชุดทักษะดังกล่าวอนุญาตให้ทำงานส่วนใหญ่ที่เกี่ยวข้องกับนักพัฒนาได้อย่างง่ายดาย


คำตอบที่ดี คำสั่งใดที่ใช้สำหรับการเริ่ม / หยุดบริการระบบ
ทิม

11

จากประสบการณ์ของฉันกับเพื่อนร่วมงานจำนวนมากของฉันตั้งแต่ฉันเริ่มทำงานไม่มีใครต้องการที่จะปลอมความรู้ Unix: พวกเขา " รู้ทางของพวกเขารอบบรรทัดคำสั่ง " หรือพวกเขาก็พูดว่า "ไม่มีทาง!"

เพียงแค่ถามว่าผู้สมัครยินดีที่จะทำงานในเวิร์กสเตชัน Unix หรือไม่และให้เขาบอกคุณว่าเขาสามารถผ่านการทุบตีได้ไกลแค่ไหน ในที่สุดเขาจะตั้งชื่อคำสั่งบางอย่าง; คนที่เห็นได้ชัดที่สุดคือcd, cat, moreหรือless, viหรือemacs, grep, ,awk ตั้งใจsedฟังไม่ว่าเขาจะพูดถึงman

ถ้ามันเป็นสำหรับการพัฒนาเขาควรจะคุ้นเคยกับmakeและ Makefiles และบางอินเตอร์เฟซการควบคุมแหล่งบรรทัดคำสั่ง ( svn, git, cleartool, hg, cvs... )


4
ฉันรู้เกี่ยวกับmanและฉันจะใช้มันเมื่อใดก็ตามที่ Google ไม่ได้ช่วย แต่ผมไม่เคยนำมาขึ้นในรายการของคำสั่ง ...
Mehrdad

3
manเป็นวิธีที่มีประสิทธิภาพที่สุดในการเรียนรู้เกี่ยวกับยูนิกซ์บรรทัดคำสั่งและไลบรารี C เมื่อคุณออฟไลน์ โดยวิธีการที่ฉันได้เรียนรู้ Unix เมื่อเครื่องมือที่ทันสมัยที่สุดในการค้นหาอินเทอร์เน็ตtelnet archie.cs.mcgill.ca
mouviciel


@mouviciel: ยังเป็นวิธีที่มีประสิทธิภาพมากที่สุดในการเรียนรู้เกี่ยวกับบรรทัดคำสั่ง unix เมื่อคุณออนไลน์เนื่องจากฟอรัมส่วนใหญ่จะ 'ช่วย' บอก rtfm ถ้าคุณถามรายละเอียดเกี่ยวกับคำสั่ง นี่ควรจะโอเคถ้าหน้าคู่มือไม่ซับซ้อนอย่างเหลือเชื่อและเอกสารนำทางยาก โชคดีที่มี stackoverflow!
Joren

ฉันไม่รู้เรื่องนั้น ฉันใช้ man pages มากเกินไปและฉันไม่เคยมีปัญหาใด ๆ เลยเมื่อฉันชินกับมันแล้ว เป็นชิ้นส่วนของเค้กเพื่อค้นหาสิ่งที่คุณกำลังมองหา คุณมีส่วนต่างๆคุณมี "ดูเพิ่มเติม" และคุณสามารถค้นหาสิ่งทั้งหมดได้ด้วยการคลิกปุ่ม คุณจะได้รับ man page สำหรับทุกคำสั่งและทุก syscall และมีการโทรเข้าห้องสมุดเล็กน้อย ฉันจะบอกว่าหน้าคนเป็นสิ่งที่ทำให้ฉันรักยูนิกซ์มาก
Yam Marcovic

10

ทำไมต้องทำเช่นนี้?

เชลล์ * nix (และเชลล์ OS อื่น ๆ , fwiw) นั้นมีสภาพแวดล้อมการทำงานที่กว้างและลึก เป็นไปได้ที่ใครบางคนจะใช้เวลาหลายปีในการทำงานที่นั่นและใช้ความจุของกระสุนเพียงเล็กน้อยเท่านั้น

หากคุณไม่คาดหวังให้บุคคลใช้โปรแกรมเชลล์) หรือ b) ดูแลระบบจากเชลล์แล้วทำไมมันถึงสำคัญ? สิ่งใดก็ตามที่ทำไปแล้วจะอยู่ในระดับพื้นฐานที่แผ่นชีท * nix ที่มีประโยชน์จะชดเชยมากกว่า "การขาดทักษะ"


มันเป็นการตรวจสอบความซื่อสัตย์ หากมีคนใช้ประสบการณ์ unix ในเรซูเม่ของพวกเขา (ซึ่งเราไม่ต้องการจริงๆ) ฉันต้องการตรวจสอบทักษะที่อ้างว่าเป็น หากคุณสามารถใช้ cd และ ls ได้คุณไม่ควรอ้างสิทธิ์ใน unix experience imo
Christophe Vanfleteren

ดีฉันก็จะขอให้สิ่งที่ระบบปฏิบัติการ Unix ที่พวกเขาใช้และมีความแตกต่างระหว่างรายชื่อระบบปฏิบัติการ Unix และอาจ Linux / Mac พวกเขา
โยฮันเน

1
@Christophe - ดีนี่คือข้อตกลง ... มันไม่สำคัญเพราะพวกเขาอาจจะไม่ทำงานสำหรับคุณ มันเป็นธงสีแดงที่สำคัญสำหรับผู้ให้สัมภาษณ์เมื่อนายจ้างที่มีศักยภาพเริ่มดึง stunts โง่เช่นนี้เพราะพวกเขาไม่ไว้วางใจสิ่งที่อยู่ในประวัติย่อ "การทดสอบ" ของคุณและการให้เหตุผลของคุณโดยพื้นฐานแล้วเป็นการบอกว่าคุณกำลังพยายามจ้างคนให้ทำงานอึที่ บริษัท อึ ฉันอาจจะผิด แต่ฉันเดาว่าไม่ได้ อย่างไรก็ตามหากฉันผิดฉันแนะนำให้คุณประเมิน "ความคาดหวัง" ของคุณอีกครั้ง
Joe Internet

1
@Yam - มันบอกว่ามันเป็นอย่างนี้ ... ถ้าคุณกำลังจ้างงานและมีคนส่งประวัติย่อให้คุณซึ่งคุณเชื่อว่ามีการวางแผนคุณเพียงแค่ไม่สัมภาษณ์บุคคลนั้น สิ่งที่คุณไม่ได้ทำคือการสร้างการทดสอบโง่ ๆ ที่ก) คุณยอมรับว่าไม่มีผลต่อข้อกำหนดของตำแหน่งและ b) ยอมรับว่าได้รับการออกแบบมาเพื่อทดสอบ "ความซื่อสัตย์" ของประสบการณ์ที่อ้างสิทธิ์ของใครบางคนเท่านั้น หากใครบางคนไม่สามารถสัมภาษณ์ที่ บริษัท OP ได้โดยไม่ต้องถาม "ความซื่อสัตย์" ของพวกเขาเพราะพวกเขาบอกว่าพวกเขาใช้เชลล์ * ระวังสิ่งนั้นพูดเกี่ยวกับ บริษัท นี้อย่างไร สำหรับฉันมันบอกว่างานอึที่ บริษัท อึ YMMV
Joe Internet

1
@Christophe - หากคุณกำลังจ้างโปรแกรมเมอร์ที่มีความสามารถ * ระวังตัว, IMO มันยุติธรรมที่จะคิดว่าพวกเขา "ที่พวกเขารู้วิธีรอบบรรทัดคำสั่ง" หากคุณกำลังจ้างนักพัฒนาระบบปฏิบัติการอื่นที่มีความสามารถ IMO เป็นธรรมที่จะถือว่าทักษะบรรทัดคำสั่ง * nix มีน้อยที่สุด กลุ่ม A ไม่จำเป็นต้องทำการทดสอบกลุ่ม B จะเกิดความล้มเหลวอัตโนมัติดังนั้นทำไมต้องทำการทดสอบด้วย หากเกณฑ์การจ้างงานผู้พัฒนาซอฟต์แวร์ขึ้นอยู่กับว่าพวกเขาใช้บรรทัดคำสั่งดีแค่ไหนฉันคิดว่ากระบวนการจ้างงานของคุณมีข้อบกพร่อง มันจะแตกต่างกันถ้า shell scripting เป็นความรับผิดชอบหลักของตำแหน่ง
Joe Internet

3

จากด้านบนของหัวของฉันฉันอาจถามพวกเขาสองสิ่ง:

  1. เมื่อคุณใช้ commandline * nix มาก่อนคุณเคยพบกับกรณีใดบ้างซึ่งคำสั่งการคิดอย่างดีช่วยให้คุณประหยัดเวลาได้มากใช่ไหม ถ้าเป็นเช่นนั้นอย่างประณีต

  2. โปรดอธิบายความแตกต่างที่สำคัญระหว่างบรรทัดคำสั่ง * nix และเดสก์ท็อป Windows มาตรฐาน ข้อดีและข้อเสียของแต่ละข้อคืออะไร

เห็นได้ชัดว่าอย่างแรกจะบอกให้คุณทราบว่าความรู้ของผู้สมัครเกี่ยวกับ commandline นั้นลึกซึ้งเพียงใด หากเขาทำงานเป็นเวลานานหลายปีกับ * ระวังเขาจะไม่เพียง แต่บอกคุณว่าเขาภูมิใจที่ได้เป็นเจ้าของ grep อย่าคาดหวังว่าพวกเขาจะจำคำสั่งที่แน่นอนแน่นอน (มี manpages ให้เสมอ) แต่เป็นแนวคิดทั่วไปของสิ่งที่พวกเขาทำ

คำถามที่สองแทนที่จะตรวจสอบว่าพวกเขาเข้าใจว่า commandline นั้นดีจริง ๆ หรือไม่และเป็นเครื่องมือที่เหมาะสมหรือไม่ เป็นเรื่องง่ายที่จะเรียนรู้การใช้ค้อน แต่ยากกว่าที่จะเปลี่ยนไปใช้เครื่องมืออื่นในกรณีที่ค้อนไม่เหมาะสม ดังนั้นคำถามนี้แสดงให้เห็นถึงมุมมองของผู้สมัครที่ดีนอกกรอบ * nix รวมถึงเปิดกว้างพอที่จะให้คะแนน (และควร) ด้วยความรู้ของเขา (ไม่มีอะไรที่แย่ไปกว่าการตอบบางอย่างเช่น "เอ่อ .. windows มี windows เหล่านั้น")


2

ขึ้นอยู่กับสิ่งที่คุณต้องการให้พวกเขาทำ

สำหรับการรับข้อมูลออกจากไฟล์บันทึกข้อเสนอแนะของคุณสำหรับ cat + grep เหมาะสม ฉันจะเพิ่ม ls, cd และน้อยลง / มากกว่านั้น

หากคุณคาดหวังให้พวกเขาทำการแก้ไขเล็กน้อย (เช่นในไฟล์ปรับแต่ง) ดังนั้นคุณควรเพิ่มการทดสอบสำหรับ vi และ / หรือ emacs และสำหรับ cp / mv / rm / mkdir


1
การทดสอบของ vi คำสั่ง sheesh ผมเป็นห่วงมากขึ้นถ้าพวกเขารู้ว่าพวกเขาทั้งหมด
NimChimpsky

1
ดีถ้าคนที่แต่งตัวประหลาดถึงสำหรับ Google และเริ่มพิมพ์ในสิ่งที่เขตข้อมูลการค้นหาเช่น " คำสั่งแก้ไข vi " แล้วฉันจะพิจารณาการทดสอบผ่าน 90% :)
gnat

1

ฉันอยากจะแนะนำให้พวกเขารู้จัก emacs หรือ vi / m, tar, sed, e / f / grep, คอมไพเลอร์ต่าง ๆ , เชลล์สคริปต์บางตัว บางทีเรียกใช้การทดสอบที่พวกเขาต้องใช้เครื่องมือเหล่านี้เพื่อคว้ารหัสจากไฟล์หนึ่งโดยไม่ต้องเปิดมันแทรกลงในโปรแกรมอื่น จากนั้นคอมไพล์โปรแกรมซึ่งจะทำให้เกิดข้อผิดพลาดเล็กน้อย จากนั้นพวกเขาจำเป็นต้องใช้โปรแกรมแก้ไขข้อความเพื่อเข้าไปในและค้นหาข้อผิดพลาดรับรหัสทำงานและเก็บไบนารี จากนั้นส่งเมลไปที่ใดที่หนึ่งขณะให้สิทธิ์แก่ผู้รับเพื่อเรียกใช้


1

ฉันไม่รู้เกี่ยวกับคุณ แต่ฉันรู้สึกรำคาญถ้าผู้สัมภาษณ์ถามฉันและฉันไม่รู้วิธีทำงานบน Linux

คุณไม่ควรสนใจสิ่งที่พวกเขารู้ในตอนนี้แต่สิ่งที่พวกเขาสามารถเรียนรู้ได้หากมีโอกาส การเรียนรู้ * เครื่องมือห้ามไม่ยากเกินไป แต่ใช้ความมุ่งมั่นนิดหน่อย - คุณควรทดสอบความสามารถมากกว่าความรู้


2
แต่คุณสัมภาษณ์ผู้สมัครเพื่อทำงานไม่ต้องเรียนรู้
NoChance

1
-1 @Emmad ดังนั้นคุณไม่เคยเรียนรู้อะไรเลยในงานที่คุณมี ...

3
-1 @EmmadKareem งานทั้งหมดกำลังเรียนรู้ไม่ทางใดก็ทางหนึ่ง
นิโคลัสสมิ ธ

ใช่การเรียนรู้คาดว่าจะมีขอบเขต แต่ถ้าบทบาทนั้นเล็กน้อยฉันคาดหวังว่าผู้สมัครจะมีประสิทธิผลในเวลาประมาณ 2 สัปดาห์ในการจ้างงานโดยเฉลี่ยในแคนาดาสิ่งนี้จะทำให้ฉันเสียค่าใช้จ่าย $ 3,000! นี่เป็นสิ่งที่ฉันคาดหวังนอกเสียจากว่าทักษะจะหายาก
NoChance

เสียงเหมือน Emmad เป็นคนที่ฉันไม่ต้องการทำงานพร้อมกับ OP
kirk.burleson

1

ขึ้นอยู่กับระดับของประสบการณ์ที่คุณต้องการให้พวกเขามี หากนี่ไม่ใช่สำหรับคนที่จะพัฒนาสำหรับระบบ * nix และไม่ใช่สำหรับผู้ดูแลระบบ * nix แต่สำหรับนักพัฒนาทั่วไปที่บางครั้งต้องทำงานบนระบบ * nix พวกเขาต้องการประสบการณ์มากแค่ไหน?

สิ่งใดที่นักพัฒนาอาจต้องการในเชลล์ * nix (ls, chmod, cat ฯลฯ ) อาจถูกเขียนลงบนชีทชีทหน้าเดียว ถ้าเป็นเช่นนั้นจำเป็นต้องมีความรู้ * nix shell ซึ่งไม่จำเป็น


0

ฉันมักจะเลือกงานง่าย ๆ และขอให้คนเขียนเชลล์สคริปต์บนไวท์บอร์ด

"คุณมีไดเรกทอรี" foo "และไดเรกทอรีสำรอง" foo_backup "เขียนเชลล์สคริปต์เพื่อดูสิ่งที่เปลี่ยนแปลงใน" foo "เนื่องจาก" foo_backup "มีการเปลี่ยนแปลง


0

'อธิบายขั้นตอนการล็อกอินใน Linux ด้วยรายละเอียดเท่าที่คุณรู้สึกสบายใจ' เป็นคำถามที่ดี กระบวนการล็อกอินเกิดขึ้นกับการสลับผู้ใช้การอนุญาตและการเป็นเจ้าของและปรัชญา Unix ทั่วไป หากพวกเขาสามารถอธิบายได้อย่างชัดเจนถึงวิธีการและสาเหตุที่มี/etc/passwdและ/etc/shadowผู้ใช้ที่ไม่ได้เป็นเจ้าของสามารถเปลี่ยนรหัสผ่านของตนเองได้ แต่ไม่ใช่ของผู้อื่นนั่นหมายถึงพวกเขา 'รับ' Unix

สิ่งที่ดีอีกอย่างคือการแยกวิเคราะห์บันทึกหรือตรวจสอบความปลอดภัยอย่างรวดเร็ว หากพวกเขาสามารถเพิ่มแบนด์วิดท์ทั้งหมดที่ให้บริการสำหรับ vhost เฉพาะจากบันทึก Apache หรือค้นหาว่ามีผู้ใช้รายอื่นในระบบที่มีหมายเลข 0 เป็นประโยชน์หรือไม่พวกเขามีประโยชน์ใน commandline

และสิ่งหนึ่งที่ไม่ควรทำกับพวกเขา: อย่าทำให้พวกเขาทำบนกระดาษ / ไวท์บอร์ด ให้ระบบสดแก่พวกเขา (แต่ไม่มีอินเทอร์เน็ตเพราะเกือบจะโกง) และดูพวกเขาไป หากพวกเขารู้วิธีการไปรอบ ๆ หน้าคนและสามารถสร้างการแสดงออกหลายท่อได้ทันทีนั่นเป็นสัญญาณที่ดี หากพวกเขาต้องการ google สำหรับทุกอย่างแล้ว skillset ของพวกเขาเป็นที่น่าสงสัย


0

เหตุใดจึงทำให้พวกเขาเขียนโปรแกรมที่ใช้งานได้ เกิดอะไรขึ้นกับการพูดว่า "บอกฉันถึงความแตกต่างระหว่าง grep และ sed หรือคำสั่ง X ทำอะไรได้บ้างเป็นต้นวิธีนั้นคุณสามารถพาพวกมันไปรอบ ๆ

หากพวกเขาคลำหางานที่คุณมอบหมายคุณอาจไม่คิดว่ามันฉลาด แต่ถ้าคุณถามคำถามทั่วไปคุณจะให้โอกาสพวกเขาแสดงให้คุณเห็นสิ่งที่พวกเขารู้ซึ่งอาจเป็นรูปธรรม แต่ในทางที่แตกต่างจากสิ่งที่คุณสงสัย


-1

ปรมาจารย์ Unix มีคำสั่ง core commandline เช่น sed, grep และอื่น ๆ ในหนึ่งนิ้วและสามารถใช้เพื่อบรรลุสิ่งที่ต้องการโดยใช้การเสนอราคาทุกประเภทการแสดงออกปกติขั้นสูง ฯลฯ ดังนั้นบางครั้งคุณเห็นสคริปต์และคิดว่ามันจะเป็น เข้าใจได้ง่ายขึ้น beeing ที่เขียนเป็นภาษาจีน;)

คุณสามารถคาดหวังได้ว่าจากการเขียนโปรแกรมเชลล์พวกเขาจะรู้ภาษาสคริปต์เพิ่มเติมอย่างน้อยหนึ่งภาษาเช่น Perl

พวกเขาจะรู้ว่าการกำหนดค่าภายในของระบบ Unix ดังนั้นหากคุณขอให้พวกเขาเปลี่ยนรูปแบบแป้นพิมพ์ (fg เพิ่มการผูกที่ด้านขวา alt +) พวกเขาจะไม่สับสน

การจัดการแพ็คเกจที่ติดตั้งจะไม่มีปัญหา การติดตั้ง Oracle ซึ่งใช้เซิร์ฟเวอร์แอปพลิเคชั่น 4 ตัวโดยแต่ละตัวใช้ JVM อื่น ๆ ก็ไม่มีปัญหาเช่นกัน การกำหนดค่าเครือข่ายเสมือนการกำหนดเส้นทางขั้นสูงและการกรองพอร์ตเครื่องเสมือนจริง ฯลฯ การจัดการความปลอดภัย - ก็ไปที่นั่นด้วย


2
คำถามนี้เกี่ยวกับการทดสอบว่านักพัฒนามีทักษะทั่วไปของ Unix หรือไม่โดยไม่ระบุ guru sysadmins ที่เน้นเฉพาะใน Oracle และ Java
Peter Taylor

JVN? เครือข่ายอาสาสมัครชาวยิวเกี่ยวข้องกับเรื่องนี้อย่างไร
ocodo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.