คำถามสัมภาษณ์ Python
โดย Aaron Cao · อัปเดตเมื่อ
คาดหวังได้สามระดับ ได้แก่ กลไกของภาษา เช่น mutability, generators และ decorators, พฤติกรรมขณะรันไทม์ เช่น GIL, และการเขียนโค้ดประยุกต์กับโครงสร้างข้อมูล การถูกปฏิเสธส่วนใหญ่มาจากคำอธิบายเหตุผลที่บางเกินไป ไม่ใช่จากไวยากรณ์ที่ผิด
คำถามที่ถูกถามซ้ำอยู่เสมอ
การไล่ทำคำถาม Python สองร้อยข้อรู้สึกเหมือนได้ผลแต่แทบไม่เปลี่ยนผลลัพธ์ของการสัมภาษณ์เลย ส่วนนี้จะจำกัดขอบเขตให้เหลือเพียงกลุ่มคำถามที่วนกลับมาซ้ำ ๆ ทั้งในรอบโทรศัพท์และรอบเทคนิค พร้อมแสดงให้เห็นว่าคำตอบที่ดีควรมีอะไรบ้าง ฟีเจอร์ภาษาเพียงไม่กี่อย่างคือตัวที่บ่งบอกความสามารถได้มากที่สุด
- Mutable default arguments ทำไม
def f(x=[])ถึงสะสมค่าไว้ระหว่างการเรียกแต่ละครั้ง? ค่าเริ่มต้นจะถูกประเมินเพียงครั้งเดียวตอนที่นิยามฟังก์ชัน ไม่ใช่ทุกครั้งที่เรียกใช้ - Generators กับ lists
yieldดีกว่าการสร้าง list เมื่อไร? เมื่อลำดับข้อมูลมีขนาดใหญ่ หรือเมื่อคุณอาจหยุดอ่านก่อนถึงตอนจบ - Decorators decorator คืนค่าอะไรกันแน่ และทำไม wrapper ถึงต้องใช้
functools.wraps? - GIL ทำไมเธรดที่เน้นการประมวลผล CPU ถึงขยายสเกลไม่ได้ใน CPython และคุณจะหันไปใช้อะไรแทน?
- Shallow copy กับ deep copy จะเกิดอะไรพังเมื่อโครงสร้างข้อมูลที่ซ้อนกันถูกคัดลอกด้วย slice?
- Identity กับ equality ทำไมการทดสอบ
isกับจำนวนเต็มค่าน้อย ๆ ใน shell ถึงให้ผลลัพธ์ที่ทำให้เข้าใจผิด
อะไรที่แยกคนผ่านออกจากคนไม่ผ่าน
ผู้สมัครสองคนอาจให้นิยาม GIL ที่ถูกต้องเหมือนกันทุกประการ แต่มีเพียงคนเดียวที่ผ่านเข้ารอบต่อไป ความแตกต่างมักอยู่ที่ประโยคที่สอง
วิศวกรแบ็กเอนด์ที่สัมภาษณ์ตำแหน่งระดับ L5 ที่ผู้ให้บริการคลาวด์รายใหญ่แห่งหนึ่งถูกถามว่าทำไมบริการของพวกเขาถึงช้าลงเมื่อมีโหลดสูง เขาระบุ GIL แล้วพูดต่อว่า เส้นทางที่ใช้เวลามากที่สุดคือการแปลง JSON ดังนั้นเธรดจึงไม่ใช่เครื่องมือที่เหมาะสม และการย้ายขั้นตอนนั้นไปใช้ process pool ก็ทำให้ throughput กลับมาเป็นปกติ การระบุข้อจำกัดได้คะแนนบางส่วน แต่การเชื่อมโยงมันเข้ากับการตัดสินใจต่างหากที่ทำให้ผ่านรอบ
สร้างคำตอบแต่ละข้อเป็นสามจังหวะ ได้แก่ ฟีเจอร์นี้ทำอะไร ทำไมมันถึงมีอยู่ และคุณจะหลีกเลี่ยงมันเมื่อไร จังหวะที่สามคือสิ่งที่ผู้สมัครส่วนใหญ่มักข้ามไป และเป็นจังหวะที่แสดงให้เห็นวิจารณญาณ หน้าอื่น ๆ เกี่ยวกับรอบการเขียนโค้ด รอบพฤติกรรม และรอบออกแบบระบบถูกจัดกลุ่มไว้ที่ ประเภทการสัมภาษณ์
วิธีเตรียมตัวโดยไม่ต้องท่องจำ
การอ่านคำตอบกับการพูดคำตอบออกมาเป็นทักษะคนละอย่างกัน และมีเพียงอย่างเดียวเท่านั้นที่ถูกทดสอบจริง ฝึกพูดออกเสียงดัง ๆ จับเวลา ด้วยคำพูดแบบเดียวกับที่คุณจะใช้ตอนสัมภาษณ์จริง
- เขียนคำตอบของคุณสำหรับแต่ละคำถามที่ถูกถามซ้ำเป็นสามประโยค แล้วลองพูดโดยไม่ดูโพย
- เลือกฟีเจอร์สองอย่างที่คุณใช้ทุกวัน แล้วเตรียมข้อจำกัดที่ตรงไปตรงมาของแต่ละอย่าง การวิจารณ์เครื่องมือของตัวเองได้แสดงถึงประสบการณ์
- เตรียมเรื่องราวการดีบักจริงสักเรื่องที่พฤติกรรมของ Python ทำให้คุณประหลาดใจ และคุณหาสาเหตุจนเจอ
- ฝึกฝนส่วนปฏิบัติแยกต่างหาก ได้แก่ dictionaries, sets, การเรียงลำดับด้วย key function และการจัดการสตริง ซึ่งครอบคลุมรอบสัมภาษณ์ส่วนใหญ่
ถ้าอยากลองจับเวลาซ้อมกับผู้สัมภาษณ์ AI ก่อนของจริง สามารถไปที่หน้า mock interview
จุดที่ผู้ช่วยแบบเรียลไทม์เหมาะสม และจุดที่ไม่เหมาะสม
SubcueAI เป็นแอปเดสก์ท็อปแบบเนทีฟสำหรับ macOS และ Windows โดยจะจับเสียงทั้งสองฝั่งของการสนทนา ถอดเสียงแบบเรียลไทม์ และแสดงโครงคำตอบบน overlay ลอยที่เก็บข้อมูลไว้ในเครื่องของคุณเท่านั้น จึงไม่ได้เข้าร่วมประชุมในฐานะผู้เข้าร่วมหรือบอท สำหรับรอบสัมภาษณ์ Python ผลลัพธ์ที่มีประโยชน์คือโครงร่างคำตอบ ไม่ใช่คำตอบสำเร็จรูป เพราะรายละเอียดต้องเป็นของคุณเอง เนื่องจากคำถามต่อเนื่องจะถามเกี่ยวกับโค้ดที่คุณเพิ่งอธิบายไป
ข้อจำกัดที่ตรงไปตรงมาสำคัญกว่าความสามารถ ถ้าคุณแชร์หน้าจอ สิ่งใดก็ตามที่อยู่บนหน้าจอนั้นก็ถูกแชร์ไปด้วย ถ้ารอบสัมภาษณ์อยู่บนแพลตฟอร์มที่มีการคุมสอบ หรือบนอุปกรณ์ที่บริษัทควบคุม ผู้ช่วยจะอยู่นอกขอบเขตการใช้งาน การตั้งค่าและสิทธิ์การเข้าถึงมีอธิบายไว้ที่หน้า tutorial