CÂU HỎI PHỎNG VẤN THƯỜNG GẶP VỚI PYTHON

Trong những năm gần đây, Python luôn là một trong những cái tên được các nhà tuyển dụng săn đón và mong mỏi nhiều nhất ở một ứng cử viên. Không chỉ ứng dụng được vào nhiều lĩnh vực khác nhau và tạo ra nhiều cơ hội việc làm, Python còn thu hút các developer bởi mức lương cao và một cơ hội phát triển đường dài.

Ngôn ngữ lập trình này chính là nền tảng cho rất nhiều sản phẩm cực kỳ nổi tiếng như Google, Quora, BitTorrent,…. Và nếu bạn là một Python Developer, thì bạn cần phải chuẩn bị thật tốt trước khi phỏng vấn, bởi lẽ chính điều này sẽ giúp ích rất nhiều cho sự tự tin và tâm lý của bạn trước khi bước vào cuộc chiến “sống còn” này đấy.

Trong bài viết này, Hybrid Technologies sẽ điểm qua cho bạn 15 câu hỏi phỏng vấn thường gặp nhất với Python nhé, khám phá ngay nào!

Đầu tiên, nếu muốn đi phỏng vấn Python thì việc hiểu những kiến thức nền tảng về nó là một điều cực kỳ cần thiết. Bạn không thể đi đánh trận nếu không có vũ khí bên mình và sự am hiểu về đối thủ, đúng không? Việc biết được ưu và nhược điểm của Python chắc chắn sẽ giúp ích cho bạn rất nhiều, một số câu hỏi dưới đây (bao gồm cả lý thuyết và code) sẽ kiểm tra kiến thức Python cơ bản của bạn.

1. Những tính năng chính của Python? Điều khiến Python trở nên thân thiện với người dùng?

  • Cũng giống như PHP và Ruby, Python được biết đến là một ngôn ngữ được dựa trên trình thông dịch, điều đó có nghĩa là, việc biên dịch không cần thiết phải có trước khi chạy như một số ngôn ngữ khác như C/C++.
  • Python là một ngôn ngữ kiểu động, tức là bạn không cần phải chỉ ra kiểu dữ liệu của các biến khi khai báo chúng hay bất cứ điều gì đó tương tự thế. 
  • Viết code với Python thì cực kỳ nhanh và cho phép các extension mở rộng dựa trên C để việc bottleneck (nút thắt cổ chai) có thể được tối ưu hóa. Package numpy chính là một ví dụ.
  • Python là ngôn ngữ lập trình dựa trên trình thông dịch, ngôn ngữ kịch bản hướng đối tượng và tương tác, và tất nhiên đây cũng là một ngôn ngữ được thiết kế để rất dễ đọc, dễ nhớ, dễ viết.
  • Tính đa năng của Python có thể ứng dụng cho nhiều lĩnh vực và các ứng dụng đa nền tảng khác nhau như ứng dụng web, big data, machine learning, mô hình khoa học,…

Ngoài những ưu điểm như cú pháp gọn, đẹp và tính dễ đọc thì Python còn đem đến cho lập trình viên những lợi ích sau:

  • Năng suất cao: Nhờ các tính năng như tích hợp quy trình, framework unit testing và khả năng kiểm soát nâng cao mà các ứng dụng Python có thể cải thiện hiệu suất và chất lượng của chúng.
  • Ngôn ngữ mã nguồn mở, hoàn toàn free và đa nền tảng: Có thể nói đây cũng chính là những thứ giúp cho Python trở nên thân thiện với người dùng và sở hữu một cộng đồng support lớn mạnh hơn bao giờ hết.
  • Kho thư viện module khổng lồ: Với hơn 300 thư viện module với nhiều tính năng khác nhau như khả năng tạo ra các file tạm thời an toàn, map file vào trong bộ nhớ, lưu trữ tập tin, v.v…. Python giúp các lập trình viên có thể tiết kiệm được thời gian làm việc của mình nhanh và hiệu quả hơn.

2. Sự khác biệt giữa List (danh sách) và Tuple (bộ dữ liệu) trong Python?

  • Bộ Dữ Liệu (Tuple): Một tuple là một chuỗi các đối tượng bất biến (hay nói các khác tuple là list không thể chỉnh sửa được), với cú pháp cho Tuple được hiển thị bằng dấu ngoặc đơn (). Không giống với List, Tuple có chiều dài cố định và thường làm việc nhanh hơn. Cú pháp như sau: tup_1 = (10,’Chelsa’,20)
  • Danh sách (List): Một List là kiểu dữ liệu đa năng có thể thay đổi được với cú pháp được hiển thị bằng dấu ngoặc vuông []. Không giống với Tuple, List có thể có độ dài thay đổi được và nó làm việc chậm hơn so với Tuple. Cú pháp như sau: list_1 = [10,’Ronaldo’,20].

3. Dữ liệu chuẩn mà Python cung cấp là gì? Phân biệt dữ liệu có thể thay đổi được (mutable) và dữ liệu không thay đổi được (immutable)?

  • Kiểu dữ liệu mutable chuẩn là những giá trị có dữ liệu có thể thay đổi được gồm có: List, Set, Dictionary
  • Kiểu dữ liệu immutable chuẩn những giá trị có dữ liệu không thể thay đổi được  gồm có: Chuỗi, Tuple, Số

4. Tham số được truyền vào như thế nào? 

Với Python, mọi thứ đều là một object và tất cả các biến đều tham chiếu tới các đối tượng. Các giá trị tham chiếu sẽ được link tới các hàm, và kết quả là ta không thể thay đổi giá trị của kiểu dữ liệu này. Tuy nhiên, chúng ta lại có thể thay đổi một đối tượng vì chúng là kiểu dữ liệu mutable.

Bên cạnh đó, bạn cũng có thể sắp xếp các đối số bằng cách sử dụng các chỉ định * và ** trong danh sách các tham số của hàm khi muốn truyền tham số tùy chọn hay từ khóa từ hàm này sang hàm khác trong Python.

5. Namespace trong Python là gì? 

Namespace trong Python còn gọi là không gian tên, là một hệ thống có một tên duy nhất cho mỗi mọi đối tượng trong Python. Một đối tượng có thể là một biến hoặc một phương thức.

Bản thân Python duy trì một namespace dưới dạng từ điển Python và có nhiều loại namespace khác nhau, và khi người dùng tạo một module thì một namespace toàn cục sẽ được khởi tạo, việc tạo các hàm cục bộ sau đó sẽ tạo ra namespace cục bộ. Namespace tích hợp sẵn bao gồm namespace toàn cục và namespace toàn cục bao gồm namespace cục bộ.

6. Module Python là gì? Module chuẩn thường dùng trong Python?

Module Python là những file chứa code Python có thể là các biến hay các class function. Một module Python thường là một file .py chứa những dòng lệnh có thể thực thi được.

Một vài module chuẩn Python thường dùng là: os, sys, math, random, data time, JSON, v.v…

7. Biến toàn cục và biến cục bộ trong Python?

Những biến nào được khai báo ở bên ngoài hàm hay trong phạm vi toàn cục (global) thì được gọi là biến toàn cục (global variable), chính vì vậy mà bạn có thể truy cập tới những biến này ở bất cứ đâu tùy thích trong chương trình.

Ngược lại, biến cục bộ (local variable) lại là những biến được khai báo bên trong một hàm nào đó. Những biến này chỉ có sẵn trong một phạm vi nhất định thay vì ở phạm vi toàn cục như các biến global.

8. Cách random những item có trong một list khi làm việc với Python?

Chúng ta có một ví dụ minh họa sau đây:

from random import shuffle
x = ['Keep', 'The', 'Blue', 'Flag', 'Flying', 'High']
shuffle(x)
print(x)

Khi đó output của dòng code trên sẽ là:

[‘Flying’, ‘Keep’, ‘Blue’, ‘High’, ‘The’, ‘Flag’]

9. Danh sách các số nguyên tố từ (1,100) với Python?

primeList = []
for possiblePrime in range(2, 100):
 
    isPrime = True
    for num in range(2, possiblePrime):
        if possiblePrime % num == 0:
            isPrime = False
 
        if isPrime:
           primeList.append(possiblePrime)
 
print(primeList)

10. Cách viết comment và comment nhiều dòng trong Python?

x = [[]]*3 x[2].append(1) print(x)
Output: 
[[1], [1], [1]]

Comment trong Python thường sẽ được bắt đầu bằng ký tự #. Tuy nhiên trong một số trường hợp ta cũng có thể dùng docstrings (hay còn gọi là document strings) với bộ ba dấu “”” bắt đầu và kết thúc. 

Bên cạnh đó, bạn cũng có thể comment nhiều hơn một dòng trong Python bằng cách sử dụng tổ hợp phím ctrl key và click trái chuột ở bất cứ chỗ nào mà bạn muốn để kí tự # và chỉ # một lần. Điều này sẽ giúp bạn comment tất cả các dòng ở những nơi mà bạn đặt con trỏ tới.

11. [::-1} có thể làm được gì?

[::-1} trong Python được dùng để đảo thứ tự của một mảng hay một trình tự nào đó. Cụ thể như sau:

import array as arr myArray=arr.array('i',[1,2,3,4,5]) myArray[::-1]

Output:

array(‘i’, [5, 4, 3, 2, 1])

Có thể thấy, [::-1} sẽ in lại bản copy bị đảo ngược của cấu trúc dữ liệu có thứ tự như một mảng hay một danh sách, và tất nhiên là mảng hay danh sách cũ vẫn được giữ nguyên, nó sẽ return cho bạn một mảng/danh sách mới.

12. Break, Continue và Pass trong Python làm việc như thế nào?

  • Break: Cho phép dừng vòng lặp khi gặp một số điều kiện nào đó và quyền điều khiển sẽ được đưa cho statement kế tiếp
  • Continue: Cho phép skip một số phần của vòng lặp khi gặp một số điều kiện cụ thể và quyền điều khiển sẽ lại được đưa về lúc bắt đầu vòng lặp.
  • Pass: Trong Python, pass là một lệnh trống, nó chỉ giữ chỗ cho các hàm, vòng lặp mà bạn đã thêm vào, nhưng chưa dùng đến trong hiện tại.

13. In hoa chữ cái đầu của một ký tự của chuỗi trong Python?

Trong Python, chuyện này trở nên đơn giản nhờ phương thức capitalize() có thể in hoa chữ cái đầu tiên của một chuỗi. Và nếu chuỗi đó đã được viết hoa sẵn chữ cái đầu thì qua phương thức trên, thì phương thức này sẽ return về chuỗi gốc ban đầu.

Ví dụ minh họa: 

string = "chao ban" string1 = "Hello friends!" 
print(string1.capitalize() + string.capitalize()) 
# output: Hello friends! Chao ban 

14. Function help () và dir () trong Python có chức năng gì?

Cả hai hàm help() và dir() đều có thể truy cập được từ trình thông dịch của Python và được sử dụng để xem một hàm tổng hợp của các hàm dựng sẵn.

  • Hàm Help (): Hàm help () được sử dụng để hiển thị chuỗi tài liệu và cũng tạo điều kiện cho bạn thấy trợ giúp liên quan đến các mô-đun, từ khóa, thuộc tính,…
  • Hàm Dir (): Hàm dir () được sử dụng để hiển thị các ký hiệu đã xác định (defined symbols).

15. Phương thức slipt(), subn(), sub() của module “re” trong Python

Để làm việc với string thì module “re” của Python đã cung cấp cho người dùng 3 phương thức sau:

  • split(): tách chuỗi thành các mảng bởi các ký tự, nếu ta cung cấp đối số num thì sẽ chia chuỗi thành num + 1 chuỗi con.
  • sub(): có tác dụng so khớp và thay thế chuỗi so khớp được. 
  • subn(): tương tự như sub() và đồng thời cũng return về một chuỗi mới đi kèm với sự thay thế của no. 

Hi vọng qua bài viết trên, bạn đọc có thể bỏ túi được thêm những câu hỏi phỏng vấn thường gặp với Python cho công việc để chuẩn bị thật tốt cho buổi interview sắp tới bạn nhé! Chúc các bạn luôn thành công!

Nguồn: Tổng hợp.

Facebook Comments
Đánh giá bài viết

Bạn thích bài viết này chứ?
Đăng ký để nhận những bài viết thú vị như thế hàng tuần.

Đừng sợ thất bại, chỉ sợ việc dậm chân tại chỗ

TÌM VIỆC
Bình luận