Các câu hỏi phỏng vấn Python dành cho người mới là gì?

Trong khi liên tục tìm hiểu thông tin chi tiết về ngôn ngữ lập trình yêu thích của mình, tôi luôn theo dõi những nội dung thú vị trên nhiều trang Notion

Trong bài viết này, tôi đã biến một số ghi chú của mình thành 20 câu hỏi phỏng vấn liên quan đến cấu trúc dữ liệu, khái niệm lập trình cốt lõi và các phương pháp hay nhất về Python.
Thật thú vị, rất nhiều câu hỏi trong số này được hỏi trong các cuộc phỏng vấn về khoa học dữ liệu.

Hy vọng bạn sẽ xem qua một số trong số chúng và nâng cao kỹ năng Python của mình

Không cần phải quảng cáo thêm nữa, hãy bắt đầu ngay. 🏊

Tham gia Medium với liên kết giới thiệu của tôi - Ahmed Besbes

Đọc mọi câu chuyện của Ahmed Besbes [và hàng nghìn nhà văn khác trên Medium]. Phí thành viên của bạn hỗ trợ trực tiếp…

Trung bình. com

1— Sự khác biệt giữa danh sách và bộ dữ liệu là gì?

Danh sách là cấu trúc dữ liệu có thể thay đổi trong khi bộ là cấu trúc không thể thay đổi.
Một đối tượng có thể thay đổi trong Python có khả năng thay đổi giá trị của nó.

Danh sách động. bạn có thể thêm các mục vào chúng hoặc ghi đè và xóa các mục hiện có.
Tuple có kích thước cố định. họ không có phương pháp append hoặc phương pháp extend. Bạn cũng không thể xóa các mục khỏi chúng.
Cả bộ và danh sách đều hỗ trợ lập chỉ mục và cho phép sử dụng toán tử in để kiểm tra các phần tử hiện có trong đó.

→ Có một số tình huống mà tôi nghĩ rằng các bộ dữ liệu có thể hữu ích

  • Nếu bạn khai báo một tập hợp các mục mà bạn biết sẽ không bao giờ thay đổi hoặc bạn sẽ chỉ lặp lại mà không thay đổi giá trị của nó, hãy sử dụng bộ dữ liệu
  • Nếu bạn tìm kiếm hiệu suất, bộ dữ liệu sẽ nhanh hơn danh sách vì chúng là cấu trúc chỉ đọc. Nếu bạn không cần thao tác ghi, hãy cân nhắc sử dụng bộ dữ liệu
  • Các bộ dữ liệu có thể làm cho mã của bạn an toàn hơn nếu bạn muốn ngăn việc vô tình ghi dữ liệu không cần thay đổi

Đây là một mẫu mã cho thấy bộ dữ liệu khác với danh sách như thế nào

2 — Sự khác biệt giữa đa xử lý và đa luồng là gì?

Đa xử lý và Đa luồng là các mô hình lập trình nhằm tăng tốc mã của bạn

Khi bạn sử dụng đa xử lý, bạn song song hóa tính toán của mình qua các quy trình. Các quy trình độc lập và không giao tiếp với nhau. chúng không chia sẻ cùng một vùng bộ nhớ và có sự cách ly nghiêm ngặt giữa. Về mặt ứng dụng, đa xử lý phù hợp với khối lượng công việc sử dụng nhiều CPU. Tuy nhiên, nó có dung lượng bộ nhớ lớn tỷ lệ thuận với số lượng quy trình

Mặt khác, trong các ứng dụng đa luồng, các luồng nằm trong một tiến trình đơn lẻ. Do đó, chúng chia sẻ cùng một vùng bộ nhớ. chúng có thể sửa đổi các biến giống nhau và có thể can thiệp lẫn nhau. Mặc dù các quy trình được thực thi nghiêm ngặt song song, nhưng chỉ có một luồng được thực thi tại một thời điểm nhất định trong Python và điều này là do Khóa phiên dịch toàn cầu [GIL]. Đa luồng phù hợp với các ứng dụng liên kết với IO như quét web hoặc tìm nạp dữ liệu từ cơ sở dữ liệu

→ Nếu ​​bạn muốn tìm hiểu thêm về đa luồng và đa xử lý, tôi khuyên bạn nên xem qua bài đăng blog tuyệt vời này để vẽ nên một bức tranh toàn diện về hai khái niệm

3 — Sự khác biệt giữa mô-đun, gói và thư viện là gì?

Một mô-đun chỉ đơn giản là một tệp Python được dự định nhập vào các tập lệnh hoặc các mô-đun khác. Nó chứa các hàm, lớp và biến toàn cục

Gói là tập hợp các mô-đun được nhóm lại với nhau bên trong một thư mục để cung cấp chức năng nhất quán. Các gói có thể được nhập giống như các mô-đun. Họ thường có một tệp __init__.py trong đó yêu cầu trình thông dịch Python xử lý chúng như vậy

Một thư viện là một tập hợp các gói

4 — Vấn đề với đa luồng trong python là gì?

Khóa phiên dịch toàn cầu [hoặc GIL] ngăn trình thông dịch python thực thi nhiều luồng cùng một lúc. Nói một cách đơn giản, GIL buộc chỉ có một luồng được thực thi tại bất kỳ thời điểm nào trong Python

Điều này thể hiện một nút cổ chai lớn về hiệu suất trong các ứng dụng gắn với CPU dựa trên mã đa luồng

5 — Trang trí là gì?

Trình trang trí là một hàm nhận một hàm làm đầu vào và trả về một hàm dưới dạng đầu ra. Mục tiêu của trình trang trí là mở rộng hành vi của hàm đầu vào mà không thay đổi cơ chế cốt lõi của nó

Sử dụng một trang trí cũng ngăn bạn lặp lại chính mình. Nó buộc bạn phải viết mã chung một lần và sau đó gõ mã đó vào mọi chức năng cần nó

Một trường hợp sử dụng điển hình mà người trang trí tỏa sáng là ghi nhật ký

Ví dụ, hãy tưởng tượng rằng bạn muốn đăng nhập vào thiết bị đầu cuối tất cả các giá trị của các tham số được truyền cho mọi hàm được gọi trong chương trình của bạn. Bạn có thể xem qua mọi định nghĩa hàm và viết nó ra hoặc bạn chỉ có thể viết một trình trang trí duy nhất thực hiện tác vụ ghi nhật ký này và áp dụng nó cho tất cả các hàm cần nó

Áp dụng một trình trang trí cho một chức năng chỉ là vấn đề thêm một dòng duy nhất phía trên định nghĩa của chức năng đó

# without decorator  def my_awesome_function[]:     
# do awesome stuff
# with a decorator @my_awesome_decorator
def my_awesome_function[]:
# do even more awesome stuff

Đây là một mẫu mã tạo một trình trang trí có tên là log ghi lại các giá trị của các tham số được truyền cho một hàm

Bộ trang trí cũng có thể được sử dụng cho các mục đích khác như chức năng định thời gian, xác thực dữ liệu đầu vào, thực thi kiểm soát và xác thực truy cập, lưu vào bộ đệm, v.v.

, bộ nhớ đệm, v.v.

6 — Làm cách nào để ghi dữ liệu vào tệp đúng cách?

Sử dụng trình quản lý bối cảnh là chìa khóa

Khi bạn sử dụng câu lệnh open mà không có trình quản lý ngữ cảnh và một số ngoại lệ xảy ra trước khi bạn đóng tệp [việc đóng tệp là điều bạn phải nhớ khi mở tệp theo cách này] có thể xảy ra sự cố bộ nhớ và tệp có thể bị hỏng trong quá trình thực hiện

Khi bạn sử dụng with để mở tệp và xảy ra ngoại lệ, Python đảm bảo rằng tệp đã được đóng

7 — Các đối số của hàm được truyền theo tham chiếu hay theo giá trị?

Tất cả các đối số hàm được truyền bằng tham chiếu trong Python. điều này có nghĩa là nếu bạn truyền một tham số cho một hàm, thì hàm đó sẽ nhận được một tham chiếu đến cùng một đối tượng đó

Nếu đối tượng có thể thay đổi và chức năng thay đổi nó, tham số sẽ thay đổi trong phạm vi bên ngoài của chức năng. Hãy xem một ví dụ

8 — Làm cách nào để ghi đè cách in đối tượng?

Sử dụng các phương pháp dunder __str____repr__

Đây là một ví dụ minh họa cách một thể hiện từ lớp Person có thể được định dạng độc đáo khi được in ra bảng điều khiển

9 — Viết hàm tính giai thừa của một số nguyên n

Đệ quy là chìa khóa

10 — Sự khác biệt giữa toán tử is và == là gì?

append0 là toán tử kiểm tra đẳng thức trong khi append1 là toán tử kiểm tra danh tính

Hai đối tượng có thể có giá trị bằng nhau mà không nhất thiết phải giống hệt nhau [i. e. có cùng địa chỉ bộ nhớ]

Hãy nhớ rằng append2 là đường cú pháp cho append3

11 — Khi nào bạn không nên sử dụng câu khẳng định?

Câu lệnh append4 hữu ích cho kiểm tra nội bộ và kiểm tra độ chính xác

Tuy nhiên, nó không nên được sử dụng để thực hiện xác thực dữ liệu hoặc xử lý lỗi vì nó thường bị vô hiệu hóa trong mã sản xuất vì lý do hiệu suất

Hãy tưởng tượng nếu bạn kiểm tra đặc quyền của quản trị viên bằng cách sử dụng khẳng định. điều này có thể giới thiệu một rò rỉ bảo mật lớn trong sản xuất

Thay vì sử dụng câu lệnh append4, bạn có thể đưa ra một lỗi tùy chỉnh

12 — Trình tạo Python là gì?

Trình tạo Python là một hàm tạo ra một chuỗi các mục

Trình tạo trông giống như các chức năng điển hình nhưng hành vi của chúng thì khác. Đối với người mới bắt đầu, thay vì sử dụng câu lệnh append6, họ sử dụng câu lệnh append7

Sau đó, gọi hàm tạo không chạy hàm. nó chỉ tạo một đối tượng trình tạo. Mã của trình tạo chỉ thực thi khi hàm append8 được áp dụng cho đối tượng trình tạo hoặc nếu trình tạo được lặp lại [trong trường hợp này, hàm append8 được gọi ngầm]

Số lần hàm append8 được gọi trên đối tượng trình tạo bằng với số lần câu lệnh append7 được gọi trong hàm trình tạo

Bạn có thể xác định trình tạo bằng vòng lặp for hoặc biểu thức trình tạo

13 — Sự khác biệt giữa phương thức lớp và phương thức tĩnh là gì?

Phương thức tĩnh là phương thức biết mọi thứ về lớp hoặc thể hiện đã gọi nó. Đó là một phương thức thuộc về lớp một cách logic nhưng không có đối số ngầm định.
Một phương thức tĩnh có thể được gọi trên lớp hoặc bất kỳ thể hiện nào của nó.

Một phương thức lớp là một phương thức được truyền vào lớp mà nó được gọi, giống như extend2 được truyền cho các phương thức thể hiện khác trong một lớp. Đối số bắt buộc của một phương thức lớp không phải là một thể hiện của lớp. nó thực sự là chính lớp học

Một trường hợp sử dụng điển hình của các phương thức lớp là cung cấp một cách khác để xây dựng các thể hiện. một phương thức lớp thực hiện điều này được gọi là một nhà máy của lớp

Đây là một lớp Nhân viên sử dụng một phương thức lớp tạo một thể hiện theo một cách hơi khác so với hàm tạo chính của lớp

14— Cho ví dụ về cách bạn sử dụng zip và liệt kê

Hàm extend3 lấy nhiều lần lặp làm đầu vào và tổng hợp chúng thành một bộ. Ví dụ: điều này có thể hữu ích nếu bạn muốn lặp lại hai danh sách cùng một lúc

Hàm extend4 cho phép lặp qua một lần lặp và truy cập cả chỉ mục đang chạy và mục cùng một lúc

15 — Bạn sẽ sử dụng *args và **kwargs như thế nào trong một hàm nhất định?

*args và **kwargs làm cho các hàm Python linh hoạt hơn bằng cách chấp nhận một số lượng đối số thay đổi

  • * args chuyển một số lượng đối số không có từ khóa khác nhau trong danh sách
  • **kwargs chuyển một số đối số từ khóa khác nhau trong từ điển

Dưới đây là ví dụ về một hàm lấy một số lượng đối số có từ khóa khác nhau được thu thập trong từ điển có tên là extend5 [lưu ý rằng nó không cần được đặt tên là extend6 ]

Ảnh của tác giả — Hàm sử dụng **kwargs16 — Cho ví dụ về lập trình hàm sử dụng bản đồ

17 — sự khác nhau giữa câu lệnh continue và break

Câu lệnh extend7 kết thúc vòng lặp chứa nó. Chương trình ngay lập tức di chuyển đến phần mã nằm trong phạm vi bên ngoài của vòng lặp

Hình ảnh của tác giả

Mặt khác, câu lệnh extend8 bỏ qua phần mã còn lại của lần lặp hiện tại và chuyển sang bước lặp tiếp theo

Hình ảnh của tác giả18 — Làm cách nào để ngăn một chức năng bị gọi trong một khoảng thời gian không cần thiết?

sử dụng bộ nhớ đệm

Nếu đầu ra được liên kết với một đầu vào nhất định không thay đổi trong một khoảng thời gian, thì việc sử dụng bộ nhớ đệm sẽ có ý nghĩa đối với chức năng

Một tình huống điển hình sẽ là truy vấn một máy chủ web. nếu bạn truy vấn một URL lần đầu tiên và bạn biết rằng phản hồi sẽ không thay đổi, bạn có thể lưu kết quả vào bộ nhớ cache

19 — Đưa ra một số nguyên tắc PEP8
  • Sử dụng 4 dấu cách cho mỗi mức thụt đầu dòng
  • Nhập khẩu nên được nhóm lại theo thứ tự sau
  1. Nhập thư viện tiêu chuẩn
  2. Nhập khẩu của bên thứ ba có liên quan
  3. Nhập ứng dụng cục bộ/thư viện cụ thể
  • Tên hàm và tên biến phải là chữ thường và được phân tách bằng dấu gạch dưới
  • Tên lớp sử dụng quy ước CapWords
20 — Làm cách nào để đọc tệp 8GB bằng Python trên máy tính có RAM 2GB?

Giải pháp này phù hợp với mọi tệp lớn [và thậm chí lớn hơn]

Khi bạn mở tệp, tất cả những gì bạn cần làm là sử dụng đối tượng tệp làm trình vòng lặp. trong khi lặp qua đối tượng tệp này, bạn sẽ tìm nạp từng dòng một và các dòng trước đó sẽ bị xóa khỏi bộ nhớ [tôi. e. chúng được thu gom rác]

Bằng cách này, tệp sẽ không bao giờ được tải hoàn toàn vào bộ nhớ và quá trình xử lý của bạn sẽ được thực hiện khi đang di chuyển

Tài liệu tham khảo 📖
  • https. //www. phòng phân tích. đồng. trong/blog/trăn-phỏng-vấn-câu-hỏi-cho-dữ-liệu-khoa-học/
  • http. //wiki. con trăn. org/moin/GlobalInterpreterLock
  • https. // stackoverflow. com/câu hỏi/986006/how-do-i-pass-a-variable-by-reference
  • https. //Trung bình. com/contentsquare-engineering-blog/multithreading-vs-multiprocessing-in-python-ece023ad55a
  • https. // pep. con trăn. org/pep-0008/
  • https. // stackabuse. com/pythons-classmethod-and-staticmethod-explained/
Cảm ơn đã đọc 🙏

Đây là tổng quan về một số câu hỏi mà tôi thường thấy trong các cuộc phỏng vấn. Tôi hy vọng bạn đã học được một vài điều từ họ

Các câu hỏi phỏng vấn cơ bản trong Python dành cho người mới bắt đầu là gì?

Câu hỏi phỏng vấn Python dành cho người mới bắt đầu .
Trăn là gì?.
Ngôn ngữ gõ động là gì?.
Ngôn ngữ thông dịch là gì?.
PEP 8 là gì và tại sao nó quan trọng?.
Phạm vi trong Python là gì?.
danh sách và bộ dữ liệu là gì?.
Các kiểu dữ liệu tích hợp phổ biến trong Python là gì?.
Vượt qua trong Python là gì?

Các câu hỏi được hỏi trong cuộc phỏng vấn cho Python là gì?

Câu hỏi phỏng vấn cơ bản về Python .
Trăn là gì?.
Lợi ích của Python là gì?.
Các tính năng chính của Python là gì?.
Python thuộc loại ngôn ngữ nào?.
Các ứng dụng của Python là gì?.
Sự khác biệt giữa danh sách và tuple trong Python là gì?.
Các biến toàn cục và cục bộ trong Python là gì?.
Xác định ĐƯỜNG PYTHON?

Câu trả lời đơn giản Python là gì?

Python là ngôn ngữ lập trình máy tính thường được sử dụng để xây dựng trang web và phần mềm, tự động hóa tác vụ và tiến hành phân tích dữ liệu . Python là ngôn ngữ có mục đích chung, có nghĩa là nó có thể được sử dụng để tạo nhiều chương trình khác nhau và không chuyên biệt cho bất kỳ vấn đề cụ thể nào.

Các câu hỏi mã hóa trong Python là gì?

Câu hỏi phỏng vấn viết mã Python .
2] Từ khóa Python có nghĩa là gì?.
3] Làm cách nào tôi có thể tạo một bộ từ danh sách?.
4] Mảng NumPy chính xác là gì?.
5] Trong Python, bạn có thể tạo một mảng NumPy trống theo những cách nào?.
6] Trong Python, chỉ số âm là gì?.
7] Cho biết đầu ra của đoạn mã sau?

Chủ Đề