Ứng tuyển một vị trí công việc Python có thể khó khăn, đặc biệt nếu bạn không sự chuẩn bị kĩ càng cho những câu hỏi có thể được hỏi. Tuy nhiên, nếu bạn chuẩn bị đủ tốt, kết quả có thể rất xứng đáng. Để giúp bạn vượt qua cuộc phỏng vấn suôn sẻ, hôm nay UniTrain sẽ gửi đến bạn 8 câu hỏi phỏng vấn về Python được hỏi nhiều nhất và câu trả lời cụ thể!
Python là loại ngôn ngữ nào?
Python là một ngôn ngữ lập trình đa năng được tạo ra bởi Guido Van Rossum vào năm 1991.
Việc triển khai chính thức của Python (CPython), là một ngôn ngữ thông dịch nhưng các triển khai khác cũng cho phép bạn biên dịch chương trình Python của mình.
Python là một strongly-typed language (những ngôn ngữ này yêu cầu biến bạn khai báo phải khai báo kiểu cho biến trước khi gán) và một dynamically-typed language (vì kiểu của các biến được trình thông dịch Python kiểm tra trong thời gian chạy).
Nó hỗ trợ nhiều mô hình lập trình và đặc biệt là lập trình hướng đối tượng và thủ tục.
Từ viết tắt PEP là viết tắt của từ gì?
PEP là viết tắt của Python Enhancement Proposal. PEP về cơ bản là một tài liệu có thể được sử dụng để đề xuất các tính năng và cải tiến mới cho người bảo trì Python hoặc để mô tả một tính năng mới hoặc một quy trình của Python cho cộng đồng.
Đây là một nguồn tài nguyên vô giá nếu bạn muốn cập nhật các triển khai mới của Python hoặc nếu bạn muốn biết cơ sở lý luận đằng sau việc triển khai Python cụ thể.
Biến môi trường PYTHONPATH là gì?
PYTHONPATH là một biến môi trường mà bạn có thể sử dụng nếu bạn cần thêm các thư mục khác nơi trình thông dịch sẽ tìm kiếm các mô-đun .
Để đặt biến này, định dạng được sử dụng giống với biến môi trường PATH của trình bao.
Sự khác biệt giữa một mô-đun và một gói trong Python là gì?
Mô-đun chỉ là một tệp Python duy nhất mà bạn có thể nhập vào các tệp Python khác để sử dụng lại mã như hàm, biến, đối tượng,…
Gói là một tập hợp các mô-đun được lưu trữ trong cùng một thư mục cho phép bạn tổ chức mã của mình tốt hơn trong một hệ thống phân cấp các mô-đun.
Để tạo một gói thực sự là tầm thường. Bạn chỉ cần tạo một thư mục với tên mà bạn chọn, đặt bên trong thư mục này tất cả các tệp Python mà bạn muốn được coi là mô-đun của gói này, sau đó thêm một tệp có tên __init__.py.
Sự khác biệt giữa biến cục bộ và biến toàn cục trong Python là gì?
Sự khác biệt giữa biến toàn cục và biến cục bộ trong Python nằm ở phạm vi của chúng, đó là khả năng hiển thị mà chúng có được từ các phần khác nhau trong chương trình của bạn.
Biến cục bộ là một biến chỉ có thể được truy cập bên trong hàm mà nó được định nghĩa .
Một biến toàn cục được khai báo bên ngoài một hàm và do đó có thể được truy cập trên toàn cục, bên trong hoặc bên ngoài hàm mà nó được định nghĩa.
Trình vòng lặp trong Python là gì và làm thế nào bạn có thể làm cho một đối tượng có thể lặp lại?
Trình lặp là một đối tượng cho phép bạn duyệt qua một đối tượng vùng chứa, lặp lại tất cả các giá trị mà nó chứa. Nếu một đối tượng vùng chứa có thể được lặp lại, nó được cho là có thể lặp lại .
Trong Python, có rất nhiều đối tượng có thể lặp lại, ví dụ như danh sách và chuỗi .
Việc lặp lại một danh sách cho phép bạn lặp qua từng giá trị đơn lẻ có trong danh sách trong khi việc lặp lại một chuỗi cho phép bạn lặp qua mọi ký tự của chuỗi, như trong ví dụ sau:
input_string = "Hello Pythonista!"
for char in input_string:
print(char)
Tuy nhiên, bạn có thể dễ dàng tự mình xây dựng đối tượng có thể lặp lại tùy chỉnh của mình bằng cách triển khai giao thức trình lặp. Giao thức này bao gồm hai phương pháp:
def __iter__(self):
def __next__(self):
Trong phương thức .__ iter __ (), bạn phải trả về đối tượng có thể được lặp lại và trong phương thức .__ next __ () , bạn phải trả về mỗi lần một giá trị khác nhau trong bộ sưu tập của mình.
Đối với trường hợp sử dụng thực tế, hãy xem ví dụ này triển khai một đối tượng có thể lặp lại có thể trả về tất cả chuỗi Fibonacci. Đó là một dãy bắt đầu bằng các số 0 và 1 và tại đó các số khác của dãy được tìm thấy bằng cách cộng hai số trước nó.
class fibonacci:
def __init__(self, max=1000000):
self.a, self.b = 0, 1
self.max = max
def __iter__(self):
# Return the iterable object (self)
return self
def __next__(self):
# When we need to stop the iteration we just need to raise
# a StopIteration exception
if self.a > self.max:
raise StopIteration
# save the value that has to be returned
value_to_be_returned = self.a
# calculate the next values of the sequence
self.a, self.b = self.b, self.a + self.b
return value_to_be_returned
my_fibonacci_iterable = fibonacci(1000)
for i in my_fibonacci_iterable:
print(i)
Như bạn có thể thấy, để tạo đối tượng Fibonacci có thể lặp lại này trong phương thức .__ iter __ (), chúng ta chỉ trả về chính đối tượng và trong phương thức .__ next __ (), chúng ta đã tính toán số lượng được trả về ở mỗi lần lặp.
Tính năng cắt chuỗi của Python là gì?
Cắt chuỗi là một tính năng của Python cho phép bạn lập chỉ mục và truy cập các phần của chuỗi một cách dễ dàng. Trong Python, một chuỗi là một đối tượng có thể lặp lại, có nghĩa là bạn có thể lập chỉ mục và truy cập các ký tự đơn bằng cách sử dụng tính năng cắt như cách bạn làm đối với bất kỳ đối tượng có thể lặp lại nào khác.
Để cắt một chuỗi, bạn chỉ cần lấy chuỗi và chỉ định chỉ mục bắt đầu và chỉ mục kết thúc của lát trong dấu ngoặc vuông, được phân tách bằng dấu hai chấm.
Ví dụ: nếu bạn cần in ba ký tự đầu tiên của một chuỗi, bạn có thể cắt nó như sau:
# Slice the input string from the beginning
input_string = "Hello Pythonista!"
first_three_characters = input_string[:3]
print(f"The first three characters are '{first_three_characters}'")
Như bạn có thể thấy, nếu bạn bỏ qua chỉ mục bắt đầu, trình thông dịch Python sẽ coi nó như bằng không.
Trong ví dụ tiếp theo, bạn sẽ cắt cùng một chuỗi bắt đầu từ ký tự “P” cho đến cuối chuỗi.
# Slice the input string from the seventh characters to the end
input_string = "Hello Pythonista!"
substring_to_the_end = input_string[6:]
print(f"A substring of the input string is '{substring_to_the_end}'")
Lưu ý rằng trong ví dụ này, chúng ta đã bỏ qua chỉ mục kết thúc. Nếu bạn bỏ qua chỉ mục kết thúc, nó sẽ tự động được coi là chỉ mục cuối cùng của đối tượng có thể lặp lại (trong trường hợp này là chuỗi).
Hơn nữa, bạn cũng có thể sử dụng các chỉ mục phủ định nếu bạn muốn chỉ ra một vị trí bắt đầu từ cuối chuỗi, như trong ví dụ này:
# Slice the input string from the end
input_string = "Hello Pythonista!"
last_three_characters = input_string[-3:]
print(f"The last three characters are '{last_three_characters}'")
Và cuối cùng, bạn có thể chỉ ra rõ ràng cả chỉ mục bắt đầu và kết thúc, ví dụ: nếu bạn cần lấy một chuỗi con ở giữa chuỗi đầu vào của bạn:
# Slice the input string in the middle
input_string = "Hello Pythonista!"
a_substring = input_string[6:12]
print(f"A substring of the input string is '{a_substring}'")
Slicing là một cách thực sự thuận tiện để thao tác các chuỗi trong Python và nó hoạt động với mọi đối tượng có thể lặp lại.
Tính năng list comprehension của Python và cho một ví dụ về cách sử dụng nó
Khả năng list comprehension là một tính năng của Python cho phép bạn tạo danh sách theo cách thực sự ngắn gọn.
Hãy xem xét ví dụ sau:
squares = []
for i in range(1000):
squares.append(i*i)
Trong ví dụ này, chúng ta đang tạo một danh sách chứa bình phương của tất cả các số nguyên từ 0 đến 999. Nhưng có một cách tốt hơn và nhanh hơn để đạt được cùng một kết quả bằng cách sử dụng tính năng hiểu danh sách:
squares = [i*i for i in range(1000)]
Vậy đó, chỉ một dòng mã.
Cú pháp cơ bản để hiểu danh sách là:
[expression for item in iterable]
Nếu bạn cần chỉ định một điều kiện cụ thể cần đáp ứng để thực thi biểu thức, bạn có thể sử dụng từ khóa if và chỉ định nó ở cuối danh sách như sau:
[expression for item in iterable if condition]
Ví dụ: nếu bạn chỉ cần 1000 ô vuông đầu tiên cho các số lẻ, bạn có thể viết danh sách của mình như sau:
odd_squares = [i*i for i in range(1000) if i%2 != 0]
Nguồn: goskills
Xem thêm
XỬ LÝ VÀ TRỰC QUAN HÓA DỮ LIỆU VỚI PYTHON
10 công ty công nghệ lớn sử dụng Python