python-top-5-cau-hoi-phong-van

Top 5 câu hỏi phỏng vấn Python không thể bỏ qua

Cùng thử sức với 5 câu hỏi phỏng vấn dưới đây để biết trình độ Python của mình đang ở mức nào nha. Bảo dễ chả dễ, nói khó cũng chẳng khó lắm đâu. Thử ngay thôi!

5. Đoạn code sau in ra gì?

Khởi động bằng một câu tương đối nhẹ nhàng với hai dòng code. Hầu hết các developer mới làm quen với Python cũng đều thấy thở vào nhẹ nhõm với câu hỏi này.

Tuy nhiên, trả lời đúng hay không thì còn chưa chắc

listA = ['1', '2', '3', '4', '5', '6']
print list[10:]
  • A – Index Error
  • B – []
  • C – 6

List chỉ có 5 phần tử, xong chưa?. Kết quả là:

Cần phải chú ý dấu hai chấm (:). Cái bẫy nằm ở đây, nếu gõ listA[10], kết quả chắc chắn là IndexError (do array chỉ có 6 phần tử). Tuy nhiên trường hợp này lại đang cố gắng slice List, nên kết quả không bao giờ là Index Error.

Rồi xong, mới một câu dễ ông đã sai tè le. Chán!.

Gì, mới chạy roda 1 câu, sai là bình thường thôi. Bao nhiêu câu hỏi phỏng vấn Python tôi trả lời được hết cơ mà!

Ok, làm câu nữa

4. Đoạn code in ra gì?

 list = [ [ ] ] * 3
 list[0].append(1)
 print(list)
 list[1].append(2)
 print(list)
  • A – [[1], [], []] và [[1], [2], []]
  • B – [[1], [1], [1]] và [[2], [2], [2]]
  • C – [[1], [1], [1]] và [[1, 2], [ 1, 2 ], [ 1, 2 ]]

Đáp án: C

Ui vãi nồi, sao lại C. Cái bẫy là bẫy từ đầu ở chỗ [ [ ] ] * 3, cú pháp này tạo ra 3 phần tử trong list. Nhưng 3 phần tử này không độc lập để edit dữ liệu theo từng index.

[[]] * 3 chính xác tạo ra 3 item trong một list nhưng là references to the same list. Tức là cả ba đều tham chiếu tới cùng một giá trị.

Quả list[0].append(1) đầu tiên nạp ba thằng giá trị 1 cho kết quả [[1], [1], [1]] . Bồi thêm phát nữa list[1].append(2) cho ra kết quả [[1, 2], [ 1, 2 ], [ 1, 2 ]]

Ôi giời, cái này thì như cái trick (thủ thuật thôi). Ông nào cứ siêng đọc một loạt câu hỏi phỏng vấn Python thì nhớ, chứ có gì đâu mà phải CĂNG.

Ok, làm câu nữa. Lý thuyết cho khỏi ý kiến ha.

3. Python có multi-threading không?. Có cách nào viết code Python chạy parallel không?

  • A – Chắc là có, cũng như Java – Parallel Stream các kiểu đồ (bạn nào chưa biết có thể đọc thêm về Parallel Stream tại Kieblog)
  • B – Làm gì có – chưa đọc câu nào phỏng vấn Python mà bảo có multi-threadting hết
  • C – Có multi-threading nhưng không triển khai parallel được

Đáp án là B. Không có.

Python có một cái gọi là Global Interpreter Lock (GIL). GIL đảm bảo rằng chỉ có duy nhất một thread được thực thi tại một thời điểm nhất định.

Ngoài ra, Python cũng có một cái gọi là Python’s threading package.

Trời má, câu này tui đúng nè má!. Làm câu lý thuyết nữa ha.

2. *args, **kwargs là gì?. Sự khác biệt?

Không có ABC. Câu này thuộc dạng câu hỏi phỏng vấn Python dễ nhất rồi đấy!

*args được sử dụng khi ta KHÔNG BIẾT CHÍNH XÁC bao nhiêu đối số (arguments) được pass qua cho function. Hoặc khi ta muốn pass arguments là một list, một loại data đặc biệt.

**kwargs sử dụng khi BIẾT CHÍNH XÁC bao nhiêu arguments được truyền qua cho function.

Cũng có thể sử dụng *bob**billy nhưng cũng khá ít người dùng.

Hai câu lý thuyết rồi, thôi quay lại list ha. Trời má, xúc luôn!

1. Đoạn code sau cho kết quả là?

def extendList(val, list=[]):
    list.append(val)
    return list

list1 = extendList(5) #1
list2 = extendList(555,[])
list3 = extendList('Z') #3

Các giá trị được in ra lần lượt ở #1 và #3 là:

  • A – [5, ‘Z’] và [5, ‘Z’]
  • B – [5] và [‘Z’]
  • C – [5] và [5, ‘Z’]

Ủa chứ ông viết cái list2 vào làm cái b**p gì?.

Thì tôi viết, nhưng tôi không hỏi. Rồi sao?. Làm gì nhau?. Chọn đáp án đi kìa.

Đáp án là A. Cái list 2 thì dễ òm, kiểu gì nó chả in ra 555 vì có pass cái list [] đi kèm đó.

Trường hợp list1 và list3, nó chỉ truyền duy nhất một arguments. Đối với các câu hỏi phỏng vấn Python, cần nhớ rằng arguments trong def được tính toán khi function được define (định nghĩa ra). Chứ không phải lúc được gọi extendList()

Chính vì define một lần, nên ở lần gọi list1 và list3, nó lấy giá trị list cũ append giá trị mới vào -> Đáp án A, không lăn tăn.

Hết, cảm ơn các ông đã đọc bài. Nếu thấy hay thì LIKE và CHIA SẺ bài viết top 5 câu hỏi phỏng vấn Python này nha.

Làm đi lần sau tôi còn viết nữa!. CẢM ƠN

Trúng tủ nha!

Tham khảo thêm một số câu hỏi phỏng vấn Python

Hết rồi. Cảm ơn anh em đã đọc bài. Nhớ like và share Facebook page nha!

Có gì thắc mắc cứ comment đây nha! - Please feel free to comment here!
Chia sẻ bài viết


Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *