46 คำถามและคำตอบสัมภาษณ์ DevOps ที่พบบ่อย [2023]
เผยแพร่แล้ว: 2023-01-12ต้องการทราบว่าจะถามคำถามอะไรระหว่างการสัมภาษณ์ DevOps ครั้งต่อไปของคุณหรือไม่ เริ่มต้นใช้งานด้วยคู่มือที่มีประโยชน์ของเรา
คำว่า DevOps ถูกบัญญัติขึ้นในปี 2550-2551 แต่ปัจจุบันกลายเป็นหนึ่งในอาชีพที่ได้รับความนิยมมากที่สุดในวิศวกรรมซอฟต์แวร์ DevOps เป็นการเปลี่ยนแปลงทางวัฒนธรรมที่สัมผัสทุกแง่มุมของการพัฒนาและการดำเนินงาน
ทั้งสองทีม (การพัฒนาและการดำเนินงาน) ทำงานร่วมกันตั้งแต่การวางแผนและการสร้างไปจนถึงการตรวจสอบและทำซ้ำ คำถามเหล่านี้เป็นคำถามที่พบบ่อยที่สุดที่คุณน่าจะเจอหากคุณต้องการตำแหน่งวิศวกร DevOps
DevOps คืออะไร?
DevOps คือรูปแบบย่อของการพัฒนาและการดำเนินการ แนวทางปฏิบัติด้านวิศวกรรมซอฟต์แวร์นี้รวบรวมทีมพัฒนาและทีมปฏิบัติการเพื่อทำให้ทุกขั้นตอนของโครงการเป็นไปโดยอัตโนมัติ ทีม DevOps มุ่งเน้นไปที่การจัดการทรัพยากร การสื่อสาร และการทำงานเป็นทีม
อะไรคือขั้นตอนต่างๆ ในระเบียบวิธี DevOps
- การพัฒนาอย่างต่อเนื่อง นี่คือขั้นตอนการวางแผนและการเข้ารหัส
- การบูรณาการอย่างต่อเนื่อง นี่คือขั้นตอนที่ทีมพัฒนาผสานรวมส่วนประกอบต่างๆ และทำให้มั่นใจว่าโค้ดจะไม่เสียหาย
- การทดสอบอย่างต่อเนื่อง นี่คือขั้นตอนการทดสอบที่กำหนดไว้ล่วงหน้าและเป็นไปโดยอัตโนมัติ
- ปรับใช้อย่างต่อเนื่อง ขั้นตอนนี้ทำให้การพัฒนาไม่ยุ่งยาก ซึ่งไม่ส่งผลกระทบต่อประสิทธิภาพการทำงานของแอปทั้งหมด
- ตรวจสอบอย่างต่อเนื่อง ขั้นตอนนี้ทำให้มั่นใจถึงประสิทธิภาพโดยรวมของแอป
- ข้อเสนอแนะอย่างต่อเนื่อง มีการวิเคราะห์ปัญหาและประสิทธิภาพตามที่รายงานโดยผู้ใช้ปลายทาง
- การดำเนินงานอย่างต่อเนื่อง อนุญาตให้ผู้พัฒนาสร้างผลิตภัณฑ์เวอร์ชันที่ดีขึ้นและตรวจจับปัญหาได้อย่างรวดเร็ว
DevOps มีประโยชน์อย่างไร?
- ส่งสินค้าได้เร็วและดียิ่งขึ้น
- ความสามารถในการปรับขนาดที่มากขึ้น
- การแก้ไขปัญหาที่รวดเร็ว
- การใช้ทรัพยากรที่ดีขึ้น
ตั้งชื่อเครื่องมือ DevOps
- เครื่องมือบูรณาการอย่างต่อเนื่อง เช่น Jenkins
- การควบคุมเวอร์ชัน เช่น Git
- สร้างเครื่องมือเช่น Maven
- เครื่องมือจัดการการกำหนดค่าเช่น Chef
- คอนเทนเนอร์แพลตฟอร์ม เช่น Docker
ตั้งชื่อ KPI ของ DevOps
- ความถี่ในการปรับใช้
- เปลี่ยนระดับเสียง
- เวลาปรับใช้
- อัตราการปรับใช้ที่ล้มเหลว
- การตรวจจับเวลา
- อัตราการหลบหนีของข้อบกพร่อง
ความแตกต่างระหว่าง DevOps และ Agile
DevOps เป็นวัฒนธรรมที่ส่งเสริมการทำงานร่วมกันระหว่างสมาชิกในทีมทั้งหมดที่เกี่ยวข้องกับการพัฒนาและบำรุงรักษาซอฟต์แวร์
Agile เป็นวิธีการพัฒนาที่ออกแบบมาเพื่อทำให้ทีมมีประสิทธิผลและขับเคลื่อนการเปิดตัวตามความต้องการที่เปลี่ยนแปลง
AWS มีบทบาทอย่างไรใน DevOps
AWS มีชุดบริการที่ยืดหยุ่นซึ่งช่วยให้บริษัทต่างๆ พัฒนาแอปพลิเคชันได้อย่างรวดเร็วและเชื่อถือได้ บริการของ AWS ช่วยลดความซับซ้อนในการปรับใช้โค้ด การจัดเตรียมและการลดความซับซ้อนของโครงสร้างพื้นฐาน ทำให้กระบวนการเผยแพร่ซอฟต์แวร์เป็นไปโดยอัตโนมัติ และการตรวจสอบประสิทธิภาพของโครงสร้างพื้นฐาน
การใช้ SSH คืออะไร?
SSH (Secure Shell) เป็นโปรโตคอลที่อนุญาตการเชื่อมต่อที่ปลอดภัยระหว่างคอมพิวเตอร์เครื่องต่างๆ SSH ให้บริการตามวัตถุประสงค์ที่แตกต่างกัน เช่น การเสนอขาย; การรับรองความถูกต้องที่แข็งแกร่ง การเข้ารหัสที่แข็งแกร่ง การรักษาความสมบูรณ์ของการเชื่อมต่อ การเชื่อมต่อที่แข็งแกร่ง และความปลอดภัย
การบูรณาการอย่างต่อเนื่องคืออะไร?
การผสานรวมอย่างต่อเนื่องช่วยให้นักพัฒนาซอฟต์แวร์สามารถรวมโค้ดของตนลงในที่เก็บข้อมูลส่วนกลางได้ จากนั้นรหัสจะถูกนำไปผ่านการสร้างและทดสอบอัตโนมัติ
การจัดการการกำหนดค่าคืออะไร?
เป็นกระบวนการทางวิศวกรรมของระบบในการสร้างและรักษาความสอดคล้องของประสิทธิภาพและคุณสมบัติการทำงานและทางกายภาพของระบบ/ผลิตภัณฑ์ตลอดวงจรชีวิต
การทดสอบอย่างต่อเนื่องคืออะไร?
นี่คือการทดสอบแอปพลิเคชันที่กำหนดไว้ล่วงหน้าและอัตโนมัติเมื่อการพัฒนาดำเนินต่อไป
Git คืออะไร?
นี่เป็นเครื่องมือโอเพ่นซอร์สและฟรีสำหรับการจัดการซอร์สโค้ด เครื่องมือนี้ออกแบบมาเพื่อจัดการโครงการขนาดเล็กและใหญ่
กล่าวถึงคำสั่ง Git พื้นฐานบางคำสั่ง
- โคลน Git
git clone <https://name-of-the-repository-link>
- สาขา Git
git branch <branch-name>
- ชำระเงิน Git
git checkout <name-of-your-branch>
- เพิ่มคอมไพล์
git add <file>
- Git คอมมิชชัน
git commit -m "commit message"
- กด Git
git push <remote> <branch-name>
- Git ดึง
git pull <remote>
อธิบายความแตกต่างระหว่าง Git merge และ Git rebase
คำสั่งผสาน Git ช่วยให้ผู้พัฒนาสามารถผสานสาขา Git ต่างๆ ในขณะที่บันทึกการคอมมิตของสาขาที่เกี่ยวข้องยังคงอยู่
คำสั่ง Git rebase ช่วยให้นักพัฒนารวมการเปลี่ยนแปลงจากสาขาหนึ่งไปยังอีกสาขาหนึ่งได้ และบันทึกจะถูกเปลี่ยนเมื่อกระบวนการเสร็จสิ้น
อธิบายความแตกต่างระหว่าง Git fetch และ Git pull
Git fetch บอกให้ git ดึง/ตรวจสอบข้อมูลเมตาล่าสุดจากต้นฉบับ อย่างไรก็ตาม มันไม่ได้ถ่ายโอนไฟล์ใด ๆ แต่เพียงแค่ตรวจสอบ
Git ดึงการตรวจสอบและนำการเปลี่ยนแปลงจากที่เก็บระยะไกลไปยังโครงการในเครื่อง
ความขัดแย้งในการผสานคืออะไร?
ความขัดแย้งในการผสานเกิดขึ้นเมื่อคุณผสานสองสาขาเข้ากับคอมมิชชันที่แข่งขันกัน ความขัดแย้งในการผสานมักเกิดขึ้นเมื่อนักพัฒนาที่แตกต่างกันเปลี่ยนบรรทัดของรหัสหรือไฟล์เดียวกัน
การควบคุมเวอร์ชันคืออะไร และประเภทต่างๆ มีอะไรบ้าง
การควบคุมเวอร์ชัน (การควบคุมแหล่งที่มา) คือกระบวนการติดตามและจัดการการเปลี่ยนแปลงรหัสซอฟต์แวร์
นี่คือการควบคุมเวอร์ชันประเภทต่างๆ
- รวมศูนย์ – มีสำเนาซอร์สโค้ด “ส่วนกลาง” ชุดเดียวบนเซิร์ฟเวอร์ และการเปลี่ยนแปลงทั้งหมดจะกระทำกับสำเนา 'ส่วนกลาง' Subversion (SVN) และ Perforce เป็นตัวอย่างของการควบคุมเวอร์ชันแบบรวมศูนย์
- แบบกระจาย (DVCS) - ไม่มีเซิร์ฟเวอร์กลางเพื่อจัดเก็บไฟล์ทั้งหมดของโครงการ Git และ Mercurial เป็นตัวอย่างของ DVCS
ประโยชน์ของการใช้การควบคุมเวอร์ชันคืออะไร?
- ช่วยนักพัฒนารักษาประสิทธิภาพและความคล่องตัว
- ให้บันทึกที่สมบูรณ์ของการเปลี่ยนแปลงทุกโครงการ/ไฟล์
- ปรับปรุงการตรวจสอบย้อนกลับ
- ช่วยในการจัดการการรวมและการแยกสาขา
- เปิดใช้งานการทำงานร่วมกัน
การแตกแขนงคืออะไร?
การแตกแขนงหมายถึงการสร้างที่เก็บหลักแยกต่างหาก/เวอร์ชันใหม่ สาขาช่วยให้คุณสามารถทำงานในส่วนต่างๆ ของโครงการได้โดยไม่กระทบกับสาขาหลัก
กลยุทธ์การแตกสาขาคืออะไร?
กลยุทธ์การผสานเป็นวิธีการที่ทีมพัฒนาซอฟต์แวร์นำมาใช้เมื่อเขียน ผสาน และปรับใช้โค้ด วิธีการดังกล่าวช่วยให้แน่ใจว่าจุดบกพร่องและข้อผิดพลาดได้รับการแก้ไขในขั้นตอนของสาขาก่อนที่จะรวมเข้ากับโครงการหลัก
การทดสอบอัตโนมัติคืออะไร และจะทำการทดสอบอัตโนมัติใน DevOps ได้อย่างไร
การทดสอบการทำงานอัตโนมัติเป็นเทคนิคการตรวจสอบและตรวจสอบโค้ดโดยอัตโนมัติ ทำการทดสอบการทำงานอัตโนมัติเพื่อตรวจสอบว่าเป็นไปตามมาตรฐานคุณภาพสำหรับการทำงาน (ตรรกะทางธุรกิจ) สไตล์โค้ด และประสบการณ์ผู้ใช้หรือไม่
การทดสอบระบบอัตโนมัติทำได้โดยใช้เครื่องมือเช่น Selenium และ Katalon
Jenkinsfile คืออะไร
Jenkinsfile เป็นไฟล์ข้อความที่มีคำจำกัดความของ Jenkins ไปป์ไลน์ Jenkinsfile ถูกตรวจสอบในที่เก็บการควบคุมแหล่งที่มา บางส่วนของการใช้งานคือ; อนุญาตให้ใช้แนวทางการตรวจสอบสำหรับไปป์ไลน์ อนุญาตให้ตรวจสอบโค้ดและทำซ้ำในไปป์ไลน์ และให้แหล่งความจริงแหล่งเดียวในไปป์ไลน์
อธิบายสถาปัตยกรรมใน Jenkins
Jenkins มีสถาปัตยกรรมหลักและทาส ซึ่งหมายความว่ามี 'ทาส' จำนวนมากที่ทำงานให้กับ 'นายคนเดียว' Jenkins Distributed Build สามารถเรียกใช้การทดสอบที่เหมือนกันในสภาพแวดล้อมที่แตกต่างกัน โดยมีการรวบรวมผลลัพธ์และรวมกันบนโหนดหลักสำหรับการตรวจสอบ
ปลั๊กอิน Jenkins อันดับต้น ๆ คืออะไร?
- ปลั๊กอิน Blue Ocean สำหรับเจนกินส์
- ปลั๊กอิน Mailer สำหรับเจนกินส์
- ปลั๊กอิน Git สำหรับเจนกินส์
- ปลั๊กอิน Jira สำหรับเจนกินส์
- ปลั๊กอินนักเทียบท่าสำหรับเจนกินส์
- ปลั๊กอินการรวม Maven สำหรับ Jenkins
- ปลั๊กอิน Kubernetes สำหรับ Jenkins
- ปลั๊กอิน SonarQube สำหรับเจนกินส์
- ปลั๊กอิน Amazon EC2 สำหรับ Jenkins
ซีลีเนียม IDE คืออะไร?
Selenium IDE เป็นเครื่องมือที่บันทึกการโต้ตอบของเบราว์เซอร์สำหรับกรณีทดสอบ คุณสามารถตั้งค่าเบรกพอยต์และตรวจสอบและหยุดตัวแปรชั่วคราวเมื่อเกิดข้อผิดพลาดขึ้นด้วย Selenium Integrated Development Environment
ส่วนประกอบของซีลีเนียมต่างกันอย่างไร?
- ซีลีเนียม IDE
- ซีลีเนียม RC
- ซีลีเนียม WebDriver
- ซีลีเนียมกริด
การทดสอบซีลีเนียมประเภทต่าง ๆ มีอะไรบ้าง?
- การทดสอบแบบ end-to-end
- การทดสอบการถดถอย
- การทดสอบระบบ
- การทดสอบประสิทธิภาพ
- การทดสอบความเข้ากันได้
อะไรคือข้อยกเว้นที่แตกต่างกันในซีลีเนียม?
- ElementNotSelectableException
- ไม่มีAlertPresentException
- SelectorException ไม่ถูกต้อง
- ไม่มีข้อยกเว้นเซสชันดังกล่าว
- StaleElementReferenceException
- ไม่มีข้อยกเว้นหน้าต่างดังกล่าว
- ไม่มีข้อยกเว้นของเฟรมดังกล่าว
- NoSuchElementException
- ข้อยกเว้นการหมดเวลา
- ElementNotVisibleException
driver.close() และ driver.quit() ใน WebDriver คืออะไร
คำสั่ง driver.close()
ปิดหน้าต่างเบราว์เซอร์ที่โฟกัส หากเปิดเพียงเบราว์เซอร์เดียว จะเป็นการปิดเซสชันของเบราว์เซอร์ทั้งหมด
คำสั่ง driver.quit()
ปิดเซสชันเบราว์เซอร์ทั้งหมดด้วยป๊อปอัป แท็บ และหน้าต่างเบราว์เซอร์
Dockerfile คืออะไร?
Dockerfile เป็นเอกสารข้อความที่มีคำสั่งทั้งหมดที่ผู้ใช้สามารถใช้ในบรรทัดคำสั่งเพื่อประกอบรูปภาพ
ความแตกต่างระหว่าง docker image และ docker container
อิมเมจนักเทียบท่าเป็นเทมเพลตแบบอ่านอย่างเดียวที่สร้างขึ้นด้วยซอร์สโค้ด เครื่องมือ ไลบรารี การพึ่งพาภายนอก และไฟล์อื่นๆ ที่จำเป็นสำหรับแอปพลิเคชันเพื่อให้ทำงานได้สำเร็จบนระบบปฏิบัติการหรือแพลตฟอร์มใดๆ
คอนเทนเนอร์นักเทียบท่าคือกล่องที่เรียกใช้เทมเพลตอิมเมจนักเทียบท่า
อธิบายสถาปัตยกรรมของ Docker
Docker เป็นไปตามสถาปัตยกรรม Client-Server และประกอบด้วย Docker Client, Docker Host และ Docker Registry
Docker Client ใช้ REST API และคำสั่งเพื่อสื่อสารกับเซิร์ฟเวอร์ (Docker Daemon)
Docker Client ใช้ CLI เพื่อรันคำสั่งเหล่านี้
docker build docker pull docker run
- Docker Host จัดเตรียมสภาพแวดล้อมเพื่อดำเนินการและเรียกใช้แอปพลิเคชัน ประกอบด้วย docker daemon ที่เก็บข้อมูล อิมเมจ คอนเทนเนอร์ และเครือข่าย
- Docker Registry จัดการและจัดเก็บอิมเมจ Docker
แพลตฟอร์มคลาวด์ที่รองรับนักเทียบท่า
แพลตฟอร์มที่รองรับ docker hosting ได้แก่
- คามาเทรา
- Google Cloud Run
- A2 โฮสติ้ง
- สแต็กพาธ
- เลอะเทอะ.io
- อเมซอน อีซีเอส
- ไมโครซอฟต์ อาซัวร์
- HostPresto
- Vultr
Nagios คืออะไร?
Nagios เป็นเครื่องมือที่ตรวจสอบโครงสร้างพื้นฐานด้านไอทีทั้งหมดเพื่อให้แน่ใจว่ากระบวนการทางธุรกิจ ระบบ บริการ และแอปพลิเคชันทำงานอย่างถูกต้อง
Nagios ทำงานอย่างไร
- การ ตรวจสอบ เจ้าหน้าที่ไอทีกำหนดค่า Nagios เพื่อตรวจสอบโปรโตคอลเครือข่าย เมตริกระบบ แอปพลิเคชัน โครงสร้างพื้นฐานเครือข่าย บริการ และเซิร์ฟเวอร์
- การ แจ้งเตือน Nagios ส่งการแจ้งเตือนเมื่อส่วนประกอบสำคัญล้มเหลว การแจ้งเตือนสามารถผ่าน SMS, รหัสที่กำหนดเองหรืออีเมล
- การตอบสนอง . ทีมไอทีรับทราบการแจ้งเตือนและดำเนินการ
- รายงาน รายงานที่ให้บันทึกประวัติของการแจ้งเตือน การหยุดทำงาน การตอบกลับการแจ้งเตือน และเหตุการณ์สำหรับการตรวจสอบในภายหลังจะถูกสร้างขึ้น
- การ บำรุงรักษา เวลาหยุดทำงานตามกำหนดเวลาจะป้องกันไม่ให้มีการส่งการแจ้งเตือนระหว่างการบำรุงรักษา
พูดถึงปลั๊กอินบางตัวใน Nagios
- ปลั๊กอิน Nagios อย่างเป็นทางการ - พัฒนาและดูแลโดยทีมงานอย่างเป็นทางการ
- ปลั๊กอินแบบกำหนดเอง - เขียนโดยบุคคล/ธุรกิจเพื่อให้เหมาะกับความต้องการของแต่ละบุคคล
- ปลั๊กอินชุมชน - พัฒนาโดยสมาชิกของชุมชน Nagios
อธิบายการจำลองเสมือนด้วย Nagios
Nagios นำเสนอความสามารถในการตรวจสอบเมตริกต่างๆ บนแพลตฟอร์มการจำลองเสมือนที่หลากหลาย Nagios สามารถเรียกใช้จากแพลตฟอร์มการจำลองเสมือนต่างๆ เช่น Xen, Amazon EC2, VMware และ Microsoft Virtual PC
Nagios ช่วยตรวจสอบได้อย่างไร?
Nagios ใช้ตัวแทนเช่น NRPE, check_mk หรือ SNMP เพื่อรวบรวมสถิติบนเซิร์ฟเวอร์ของคุณ และส่งการแจ้งเตือนหากตัวชี้วัดอยู่เหนือเกณฑ์ที่กำหนดไว้ล่วงหน้า
Nagios ใช้หมายเลขพอร์ตใดเพื่อการตรวจสอบ
SNMP พอร์ต 161 และ 162
ตัววิเคราะห์เครือข่าย Nagios คืออะไร?
ตัววิเคราะห์เครือข่าย Nagios เป็นซอฟต์แวร์วิเคราะห์ข้อมูลสโฟลว์ที่ช่วยให้ผู้ใช้สามารถแก้ไขพฤติกรรมที่ผิดปกติ การหยุดทำงาน และภัยคุกคามด้านความปลอดภัยเชิงรุกก่อนที่จะขัดจังหวะการดำเนินธุรกิจ เครื่องมือระดับการค้านี้นำเสนอข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับทราฟฟิกเครือข่ายและโครงสร้างพื้นฐานด้านไอที
ตัวแปรที่ส่งผลต่อการสืบทอดและการเรียกซ้ำใน Nagios
- ชื่อ - เทมเพลต 'ชื่อ' ที่สามารถสืบทอดตัวแปร/คุณสมบัติของวัตถุ
- ใช้- ระบุ ชื่อวัตถุของเทมเพลตที่คุณต้องการสืบทอดตัวแปร/คุณสมบัติ
- Register ระบุว่าชื่อของวัตถุเทมเพลตควร 'registered' กับ Nagios หรือไม่
หุ่นคืออะไร?
Puppet เป็นเครื่องมือโอเพ่นซอร์สสำหรับการจัดการการกำหนดค่าซอฟต์แวร์และการปรับใช้
รายการหุ่นกระบอกคืออะไร?
Puppet Manifest เป็นไฟล์ที่มีภาษาการกำหนดค่า Puppet ซึ่งอธิบายวิธีการกำหนดค่าทรัพยากร
รหัสหุ่นคืออะไร?
รหัสหุ่นเป็นรหัสประกาศ หมายความว่าคุณอธิบายโดยใช้สถานะที่ต้องการของระบบและไม่ใช่ขั้นตอนที่จำเป็นเพื่อไปที่นั่น
เชฟคืออะไร?
Chef เป็นเครื่องมือจัดการการกำหนดค่าที่แปลงโครงสร้างพื้นฐานเป็นโค้ด เครื่องมือนี้มุ่งเน้นไปที่การเขียนโค้ดแทนกระบวนการด้วยตนเอง
เชฟทำงานอย่างไร?
งานของเชฟเริ่มต้นเมื่อผู้ดูแลระบบหรือนักพัฒนากำหนดให้งานเป็นแบบอัตโนมัติ ตำราอาหารและสูตรอาหาร (โปรแกรมขนาดเล็กที่เขียนด้วยภาษาเฉพาะโดเมน) จะถูกบันทึกและทดสอบโดยใช้เครื่องมือต่างๆ เช่น Test Kitchen, ChefSpec และ Foodcritic
หากตำราอาหารและสูตรอาหารทำงานตามที่คาดไว้ ระบบจะนำไปใช้กับเซิร์ฟเวอร์ Chef โดยใช้มีดและเครื่องมือบรรทัดคำสั่งของเชฟ กระบวนการปรับใช้เชฟมีเซิร์ฟเวอร์เชฟ เวิร์กสเตชัน และโหนด คุณสามารถเลือกจากเทมเพลตตำราอาหารกว่า 3,000 รายการและปรับแต่งตามความต้องการของคุณ จากนั้นเชฟจะดูแลงานที่เหลือ
สรุป
จากข้อมูลของ Glassdoor เงินเดือนเฉลี่ยของวิศวกร DevOps คือ $104281 ต่อปีในสหรัฐอเมริกา แม้ว่า DevOps จะเป็นอาชีพใหม่ แต่ตอนนี้เราสามารถเห็นบริษัทจำนวนมากขึ้นจ้างงานสำหรับบทบาทนี้และเผยแพร่หลักสูตรต่างๆ เพื่อให้มืออาชีพมีทักษะที่จำเป็น ข้างต้นคือคำถามที่คุณอาจพบในการสัมภาษณ์ DevOps
คุณยังสามารถสำรวจหลักสูตรออนไลน์ดีๆ เพื่อเรียนรู้ DevOps