Câu hỏi phỏng vấn Python Developer

76 Các câu hỏi phỏng vấn Python Developer được chia sẻ bởi các ứng viên

Chuẩn bị cho một cuộc phỏng vấn chủ yếu là dành thời gian để xem xét kỹ lưỡng các mục tiêu và trình độ của bạn so với vị trí và nhà tuyển dụng. Để thực hiện được điều này, bạn nên thực hiện tìm hiểu về công ty và xem xét cẩn thận mô tả công việc và bản thân để có cuộc phỏng vấn tốt nhất. Dưới đây là những câu hỏi phỏng vấn vị trí Python Developer thường gặp.

Bộ câu hỏi phỏng vấn về thông tin cá nhân

Bạn hãy giới thiệu sơ lược về bản thân?

Giới thiệu thông tin cơ bản của bản thân là một trong những câu hỏi mở đầu của buổi phỏng vấn. Có thể người phỏng vấn của bạn biết vị trí bạn đang ứng tuyển và đã xem sơ yếu lý lịch của bạn. Tuy nhiên, bạn nên chuẩn bị một bài giới thiệu  ngắn gọn để đảm bảo họ biết bạn là ai và vai trò mà bạn đang phỏng vấn. Qua đây, nhà tuyển dụng cũng dễ trò chuyện trong những câu hỏi tiếp theo. Bạn hãy trả lời với sự tự tin, lời nói rõ ràng để lấy được thiện cảm từ cái nhìn đầu tiên.

Bạn hãy nói sơ lược về thông tin cá nhân như tên, tuổi để xưng hô cho thuận tiện. Tiếp theo bạn nên giới thiệu thông tin về bằng cấp, trường học hay các khóa đào tạo mình đã học. Bạn hãy chú trọng nói những kinh nghiệm liên quan đến công việc mà bạn có đối với một Python Developer .

Ngoài ra bạn cần lưu ý khi giới thiệu bản thân trong một cuộc phỏng vấn, về những việc cần làm, bạn cũng sẽ muốn lưu ý đến những việc không nên làm. Trong phần giới thiệu của bạn, hãy tránh:

  • Lan man trong phần giới thiệu của bạn
  • Cần nhắc lại phần giới thiệu của bạn
  • Vội vàng thông qua phần giới thiệu của bạn

Mục tiêu nghề nghiệp của bạn là gì?

Nhà tuyển dụng thường hỏi về mục tiêu tương lai của bạn để xác định xem bạn có khả năng gắn bó lâu dài với công ty hay không. Ngoài ra, câu hỏi này còn được dùng để đánh giá tham vọng, kỳ vọng của bạn đối với sự nghiệp và khả năng lập kế hoạch cho tương lai. Cách trả lời câu hỏi phỏng vấn này là bạn cần xác định rõ định hướng nghề nghiệp của mình là gì, đồng thời nói ra mục đích cuối cùng của bản thân muốn hướng tới ra sao.

Định hướng nghề nghiệp đưa ra cần thực tế, liên quan trực tiếp tới doanh nghiệp và công việc đang ứng tuyển kèm lý do: "Tôi muốn phát triển hơn nữa các kỹ năng chuyên môn cho công việc này. Tôi xác định đây là công việc yêu thích và muốn gắn bó lâu dài".

Vì sao bạn nghỉ việc ở công ty cũ?

Đây là một trong các câu hỏi thường gặp khi phỏng vấn và có thể gây khó khăn cho bạn. Chuẩn bị một câu trả lời chu đáo để người phỏng vấn tin tưởng rằng bạn đang cân nhắc về việc thay đổi công việc này. Thay vì tập trung vào những khía cạnh tiêu cực của vai trò hiện tại hoặc trước đây của bạn, hãy tập trung vào tương lai và những gì bạn hy vọng đạt được ở vị trí tiếp theo. Vì vậy, hãy đưa ra câu trả lời mà không ảnh hưởng gì đến kết quả phỏng vấn:

  • Trường hợp bị sa thải: Hãy nói rõ nguyên nhân phạm lỗi và bài học của bản thân rút ra để tránh lặp lại sai lầm.
  • Nếu tự nguyện nghỉ việc: Giải thích theo cách tích cực nhất. Ví dụ: Định hướng phát triển của công ty cũ không còn phù hợp; cơ hội để phát triển bản thân không cao, muốn tìm môi trường mới năng động hơn...

Điểm mạnh của bạn là gì? Lý do doanh nghiệp nên chọn bạn?

Nhà tuyển dụng muốn chắc chắn rằng bạn thật sự tự tin về những ưu điểm của mình hiện có. Vì vậy bạn hãy trả lời rõ ràng, dõng dạc nhưng cũng đừng nhắc lại tất cả những điều đã ghi trong CV. Bạn có thể kể thêm các điểm mạnh của mình hay đặt chúng vào tình huống cụ thể nhằm minh họa rõ ràng ưu điểm đó. Nhà tuyển dụng sẽ có cái nhìn sâu hơn về những lợi thế của bạn đấy.

Mức lương ở công ty cũ của bạn là bao nhiêu?

Kinh nghiệm phỏng vấn khi trả lời mức lương ở công ty cũ là:

  • Sử dụng con số chung chung: Thay vì nói con số chính xác, bạn có thể cung cấp  con số chung chung. 
  • Sử dụng một phạm vi: Bạn có thể cung cấp mức lương khởi điểm và mức lương hiện tại ở công ty cũ. 
  • Cung cấp con số chính xác: Bạn hoàn toàn có thể chia sẻ thẳng thắn nhưng nên cung cấp tổng mức lương hàng năm trước thuế TNCN để tránh tạo cảm giác lương của bạn đang ở mức thấp hơn.

Bạn mong muốn mức lương bao nhiêu?

Nhà phỏng vấn hỏi câu hỏi này để đảm bảo rằng kỳ vọng của bạn phù hợp với số tiền họ đã dự trù cho vai trò này. Nếu bạn đưa ra mức lương quá thấp hoặc cao hơn giá trị thị trường của vị trí đó, điều đó sẽ tạo ấn tượng rằng bạn không biết giá trị của mình.

Để trả lời các câu hỏi thường gặp khi phỏng vấn này, bạn nên tìm hiểu trước về mức lương chung cho vị trí cũng như mức độ kinh nghiệm của mình. Từ đó, bạn sẽ dung hòa để đưa ra mức lương không quá cao nhưng không phải thấp, đủ để thấy được giá trị bản thân.

Ngoài mức lương, bạn nên trao đổi thẳng thắn về các quyền lợi bảo hiểm xã hội, phụ cấp xăng, ăn uống; chế độ nghỉ thai sản... rõ ràng và cụ thể.

Bạn cũng nên hiểu rõ về lương gross net, cách tính lương gross sang net và ngược lại để deal được mức lương đúng với mong muốn của bản thân nhất.

Bạn có câu hỏi nào không?

Đây có thể là một trong những câu hỏi quan trọng nhất được hỏi trong quá trình phỏng vấn vì nó cho phép bạn tìm hiểu bất kỳ thông tin nào chưa được giải quyết và cho người phỏng vấn thấy bạn nghiêm túc với vai trò này. Hãy nhớ rằng bạn cũng đang phỏng vấn công ty. Hãy dành thời gian để hỏi người phỏng vấn về trải nghiệm của họ với công ty và giải quyết bất kỳ câu hỏi nào mà bạn có thể có. 

Bạn có thể tham khảo một số câu hỏi như sau:

  • Anh/ chị có thể  mô tả về văn hóa làm việc của công ty này không?
  • Có cơ hội thăng tiến và phát triển nghề nghiệp trong công ty không?
  • Có thông tin gì về quyền lợi và gói phúc lợi mà công ty cung cấp?
  • Làm thế nào để công ty đo lường và đánh giá hiệu suất làm việc của nhân viên?
  • Có những kế hoạch mở rộng hay phát triển mới trong tương lai không?
  • Có các cơ hội đào tạo hoặc học hỏi mới để cập nhật kiến thức không?
  • Có cơ hội tham gia vào các dự án đa dạng không?

Câu hỏi phỏng vấn Python Developer về chuyên môn

Tại sao bạn quyết định làm việc với Python?

Tôi quyết định làm việc với Python vì đây là một ngôn ngữ lập trình rất mạnh mẽ và đa dụng. Python cho phép tôi phát triển ứng dụng web, xử lý dữ liệu, thậm chí là triển khai trí tuệ nhân tạo. Cú pháp dễ đọc, cộng đồng lớn và các thư viện sẵn có làm cho việc phát triển nhanh chóng và hiệu quả hơn.

Bạn đã từng sử dụng công cụ kiểm soát phiên bản nào?

Tôi đã sử dụng Git là công cụ kiểm soát phiên bản chính của mình. Tôi thường sử dụng Git để theo dõi sự thay đổi trong mã nguồn, tạo các nhánh (branches) để làm việc song song và sau đó merge lại các thay đổi vào nhánh chính khi đã hoàn thành.

Bạn đã từng phải tối ưu hóa mã nguồn Python của mình chưa?

Có, tôi đã từng phải tối ưu hóa mã nguồn Python của mình để đảm bảo hiệu suất tốt nhất. Một ví dụ là khi tôi làm việc với xử lý dữ liệu lớn, tôi đã sử dụng generator để tránh tải toàn bộ dữ liệu vào bộ nhớ cùng lúc. Tối ưu hóa cũng bao gồm việc sử dụng các thư viện thích hợp và cải thiện thời gian chạy của các phần mã nguồn chậm

Cách sử dụng hàm any và all trong Python

any() và all() là 2 function sử dụng để check điều kiện trong 1 mảng kết quả, any sẽ trả về true khi tồn tại 1 giá trị true trong mảng truyền vào; ngược lại thì all chỉ trả về true khi tất cả các giá trị trong mảng truyền vào trả về true.

any() và all() được ứng dụng nhiều trong việc xử lý check điều kiện của các dữ liệu dạng List, Tuple hay Array nhằm kiểm tra điều kiện thỏa mãn của 1 thuộc tính trong tập dữ liệu; any tương đương với điều kiện OR và all tương đương với điều kiện AND

Làm thế nào để xử lý đa luồng trong Python

Python cung cấp thread module và threading module để bạn tạo và thực thi một thread, handle xử lý các tác vụ đa luồng. Mỗi thread trong Python đều có vòng đời gồm 3 giai đoạn: bắt đầu, chạy và kết thúc. Thread có thể bị ngắt (interupt) trong quá trình chạy, hoặc có thể tạm thời bị dừng (sleeping) trong khi các thread khác đang chạy (trạng thái yielding).

Để start một thread chúng ta dùng phương thức thread.start_new_thread bằng việc import module thread. Chúng ta cũng có thể sử dụng module threading với nhiều hỗ trợ mạnh mẽ và cao cấp hơn được Python thêm vào từ version 2.4. Ngoài các phương thức có trong module thread, threading còn cung cấp một số method khác như activeCount, currentThread, hay các phương thức triển khai đa luồng như run, start, join, …

Bạn có kinh nghiệm làm việc với các thư viện Python như NumPy và Pandas không? Hãy nêu một ví dụ về cách bạn đã sử dụng chúng trong dự án trước đây."

Bạn có thể tham khảo cách trả lời như sau:

Có, tôi đã có kinh nghiệm làm việc với NumPy và Pandas trong các dự án trước đây. Ví dụ, trong một dự án phân tích dữ liệu, tôi đã sử dụng NumPy để thực hiện các phép tính toán trên mảng số học và Pandas để xử lý dữ liệu tabular. Điều này giúp tôi nhanh chóng thực hiện các phân tích thống kê và trực quan hóa dữ liệu

Việc sử dụng NumPy và Pandas đã giúp tôi tối ưu hóa thời gian xử lý dữ liệu và cung cấp những thông tin cần thiết cho quá trình ra quyết định. Tôi đã học cách áp dụng những thư viện này một cách hiệu quả và biết cách tận dụng sức mạnh của chúng trong việc xử lý dữ liệu lớn và phân tích.

Kinh nghiệm “đậu” phỏng vấn vị trí Python Developer

Để buổi phỏng vấn diễn ra suôn sẻ và nắm chắc phần thành công, bạn cần chú trọng thêm các yếu tố:

Về trang phục

Khi đi phỏng vấn, bạn nên lựa chọn những loại trang phục lịch sự, nhã nhặn phù hợp với môi trường công sở. Tránh các trang phục sặc sỡ quá, khác biệt quá, trang điểm lòe loẹt quá đều không phù hợp với một buổi phỏng vấn

Kinh nghiệm về tác phong

Nên đến sớm 10 - 15 phút, để tránh trường hợp xảy ra các sự cố trên đường hay sự cố về trang phục. Những nhà tuyển dụng cũng thích những người đến sớm và có chuẩn bị tốt.

Tác phong chuyên nghiệp, giữ bản thân ở trạng thái bình tĩnh, lắng nghe câu hỏi phỏng vấn và lời lưu loát, rõ ràng. Hạn chế nói lắp, trả lời không rõ ràng, thiếu logic, mạch lạc

Chuẩn bị kỹ càng

Chuẩn bị kỹ thông tin về vị trí mình đang ứng tuyển. Bạn bước vào buổi phỏng vấn hiểu công việc này sẽ làm gì, cần kỹ năng gì. Việc này bắt nguồn từ việc bạn đã nghiên cứu kỹ JD, nghiên cứu công việc. Như vậy, bạn sẽ thể hiện tốt những thế mạnh của mình, điều này khiến nhà tuyển dụng ấn tượng về bạn.

Chia sẻ về các dự án mà bạn đã làm và cách bạn đã giải quyết các vấn đề trong quá trình phát triển. Điều này cho thấy khả năng ứng dụng kiến thức vào thực tế.

Định hình rõ câu hỏi và vấn đề

Trong buổi phỏng vấn giao dịch viên ngân hàng sẽ có rất nhiều câu hỏi được đưa ra. Do vậy để tránh tình trạng trả lời sai/nhầm nội dung câu hỏi, trả lời ấp úng, ngắt quãng,... bạn nên chuẩn bị trước những câu hỏi có thể gặp phải và đưa ra câu trả lời cho chúng.

Để tự tin hơn trong buổi phỏng vấn, bạn có thể liệt kê các câu hỏi và câu trả lời, sau đó học thuộc. Đồng thời, luôn giữ tâm thế bình tĩnh, phong thái tự tin, sẵn sàng đón nhận bất cứ câu hỏi phỏng vấn “khó nhằn” nào.

Câu hỏi phỏng vấn Python Developer & Cách trả lời

Dưới đây là 3 câu hỏi phỏng vấn Python Developer hàng đầu và cách trả lời chúng:

Câu hỏi #1: List và Array khác nhau thế nào?

List

Array

Python list linh hoạt và có thể lưu nhiều kiểu dữ liệu khác nhau. Python array là một bọc mỏng quanh C array.
List là một phần trong cú pháp của Python, nên không cần khai báo trước. Array cần được import, hoặc khai báo từ các thư viện khác (như numpy)
List có thể thay đổi kích thước một cách nhanh chóng vì Python khởi tạo thêm một số thành phần khác trong list ngay khi khởi tạo. Array không thay đổi kích thước được. Thay vào đó, các giá trị của một array sẽ được sao chép qua một array khác có kích thước lớn hơn.
List có thể chứa các dữ liệu không đồng nhất về kiểu. Array chỉ có thể chứa các dữ liệu đồng nhất về kiểu.
Không thể áp dụng các hàm toán học trực tiếp lên list. Thay vào đó, chúng phải được áp dụng lần lượt trên từng thành phần của list. Array được tối ưu hoá cho các phép tính số học.
List tiêu thụ nhiều bộ nhớ hơn vì chúng phân bổ thêm bộ nhớ cho một số thành phần bổ sung để dễ dàng đưa thêm thành phần vào list. Vì array không thay đổi kích thước sau khi khởi tạo, chúng tiêu thụ ít bộ nhớ hơn.

Câu hỏi #2: Làm cách nào để 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: 

Tài liệu VietJack

Câu hỏi #3: [::-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:

Tài liệu VietJack

Output:

Tài liệu VietJack

Như vậy 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.

Câu hỏi phỏng vấn

Python Developer được hỏi... 05/06/2023

Giải thích cơ chế kế thừa trong Python và đưa ra một ví dụ minh hoạ

1 câu trả lời

Kế thừa cho phép một Lớp (Class) thừa hưởng tất cả các thành phần (thuộc tính và hàm) của một Lớp khác. Kế thừa giúp tăng khả năng tái sử dụng mã nguồn, giúp dễ tạo và bảo trì các ứng dụng. Lớp cho kế thừa được gọi là Lớp cha (super class) và lớp kế thừa từ lớp khác được gọi là Lớp con (child class.)

Python hỗ trợ 4 kiểu kế thừa sau:

  • Kế thừa đơn - một lớp kế thừa từ một lớp cha duy nhất.
  • Kế thừa đa lớp - lớp con d1 kế thừa từ lớp Cha 1, và d2 kế thừa từ lớp Cha 2.
  • Kế thừa theo thứ bậc - một lớp cha có thể cho cho nhiều lớp con kế thừa.
  • Đa kế thừa - một lớp con kế thừa từ nhiều hơn một lớp cha.
Python Developer được hỏi... 05/06/2023

Tính đa hình (Polymorphism) trong Python là gì?

1 câu trả lời

Tính đa hình chỉ khả năng một đối tượng có thể có nhiều hình thức khác nhau.

Ví dụ, nếu Lớp cha có một hàm tên ABC, Lớp con có thể có một hàm cùng tên nhưng với các tham số và biến khác nhau. Python hỗ trợ tính đa hình.

Python Developer được hỏi... 05/06/2023

Hãy giải thích sự khác nhau giữa hàm range() và hàm xrange()

1 câu trả lời

Trong phần lớn các trường hợp range()xrange() chỉ cùng một tính năng. Chúng đều cho chúng ta tạo ra một Danh sách (List) các số nguyên để sử dụng.

Sự khác biệt duy nhất là hàm range trả về một đối tượng Danh sách của Python, còn hàm xrange trả về một đối tượng xrange.

Python Developer được hỏi... 05/06/2023

PYTHONPATH là gì?

1 câu trả lời

Đó là một biến môi trường được sử dụng khi một đơn nguyên ứng dụng (module) được nhập (import) vào chương trình. Khi nhập một module, PYTHONPATH sẽ được tìm kiếm để kiểm tra sự có mặt của module được yêu cầu nhập trong các thư mục khác. Trình phiên dịch dùng biến PYTHONPATH để xác định module nào sẽ được tải vào bộ nhớ.

Python Developer được hỏi... 05/06/2023

PEP 8 là gì?

1 câu trả lời

PEP là chữ viết tắt của Python Enhancement Proposal (Đề xuất tăng cường Python.) Đó là một bộ các quy ước về cách viết, định dạng mã nguồn, một bộ các đề xuất về cách viết mã nguồn Python để dễ đọc hơn.

Python Developer được hỏi... 06/06/2023

Vật trang trí (decorator) Python là gì?

1 câu trả lời

Vật trang trí là một mẫu thiết kế (design pattern) trong Python cho phép người dùng thêm tính năng cho một đối tượng sẵn có mà không cần sửa đổi cấu trúc của nó. Vật trang trí thường được gọi trước định nghĩa hàm chúng ta muốn trang trí.

Python Developer được hỏi... 05/06/2023

Init là gì?

1 câu trả lời

__init__ là một hàm tạo dựng (constructor) trong Python. Hàm này tự động được gọi để phân chia bộ nhớ khi một đối tượng hay một thực thể (instance) của một Lớp được khởi tạo. Tất cả các Lớp đều có hàm __init__

Python Developer được hỏi... 06/06/2023

Toán tử bộ ba là gì?

1 câu trả lời

Toán tử bộ ba là một cách viết câu lệnh điều kiện trong Python. Như từ 'bộ ba' trong tên gợi ý, toán tử này bao gồm 3 thành phần:

  • Giá trị điều kiện đúng: Giá trị sẽ được gán cho biến nếu biểu thức điều kiện trả về giá trị True
  • Điều kiện: một biểu thức trả về kết quả True hoặc False
  • Giá trị điều kiện sai: Giá trị sẽ được gán cho biến nếu biểu thức điều kiện trả về giá trị Sai

Toán tử bộ ba có thể được xem như một phiên bản đơn giản hoá, 1 dòng của câu lệnh if-else với một điều kiện

Tài liệu VietJack

Cú pháp

var = true_val if condition else false_val

Biến var bên tay trái của toán tử gán sẽ có giá trị: 
  • true_val nếu điều kiện là True
  • false_val nếu điều kiện là False
Python Developer được hỏi... 05/06/2023

Biến toàn cục (global) và biến địa phương (local) trong Python là gì?

1 câu trả lời

Biến toàn cục là các biến được khai báo bên ngoài phạm vi một hàm hoặc được khai báo trong không gian toàn cục. Các biến này có thể được truy xuất bởi bất kỳ hàm nào trong chương trình.

Biến địa phương là các biến được khai báo trong phạm vi của một hàm. Các biến địa phương tồn tại trong không gian địa phương, và không tồn tại trong không gian toàn cục. Biến địa phương chỉ có thể được truy xuất trong phạm vi hàm mà nó được khai báo.

Python Developer được hỏi... 05/06/2023

@property trong Python là gì?

1 câu trả lời

@property là một vật trang trí trong Python. @property trước định nghĩa một hàm cho phép truy xuất hàm đó như cách truy xuất một thuộc tính (không cần cặp ngoặc đơn sau tên hàm.)

Python Developer được hỏi... 05/06/2023

Try / except được sử dụng thế nào trong Python?

1 câu trả lời

Một "ngoại lệ" (exception) là một lỗi xảy ra trong quá trình thực thi một chương trình. Khi lỗi này phát sinh, chương trình sẽ dừng lại và tạo ra một "ngoại lệ" và chuyển những "ngoại lệ" này qua bộ xử lý riêng để ngăn chương trình bị dừng thực thi do lỗi (crash.)

Những ngoại lệ được tạo ra bởi một chương trình có thể được bắt trong khối lệnh try và xử lý trong khối lệnh except.

  • Try: hãy thử thực thi khối lệnh sau đây để xem có bị lỗi không
  • Except: nếu lỗi xảy ra ở đoạn lệnh trên, hãy xử lý nó bằng khối lệnh dưới đây
Python Developer được hỏi... 05/06/2023

Hãy giải thích sự khác biệt giữa Python 2 và Python 3

1 câu trả lời

  PYTHON 2 PYTHON 3
Mã hoá chuỗi Python 2 mã hoá chuỗi theo bộ mã ASCII. Unicode là bộ mã cha (super set) của ASCII và do đó, có thể mã hoá nhiều ký tự hơn, bao gồm cả các ký tự Python 3 lưu  chuỗi ở định dạng Unicode theo mặc định.
Phép chia  Python 2 áp dụng hàm floor vào kết quả của phép chia và chỉ trả về phần nguyên của thương số. Do đó, 5 / 2 sẽ trả về kết quả 2 (thay vì 2.5) Phép chia trong Python 3 trả về kết quả thập phân như thông thường. 5 / 2 = 2.5
Lệnh in (print)

Python 2 không yêu cầu cặp ngoặc đơn (). 

Ví dụ: print 'print me!'

Python 3 yêu cầu đặt nội dung in giữa cặp ngoặc đơn (). 

Ví dụ: print('print me!')

Các thư viện  Nhiều thư viện được xây dựng cho Python 2 và không tương thích với Python 3 Một số thư viện mới hơn được xây dựng cho Python 3, và không tương thích với Python 2
Python Developer được hỏi... 06/06/2023

Hàm join trong Python là gì?

1 câu trả lời

Hàm join trong Python nhận một biến có cấu trúc khả lặp (iterable) và nối chúng lại với nhau sử dụng một giá trị chuỗi.

Cách join làm việc: 

Tài liệu VietJack

Ví dụ: Nối các thành phần bằng chuỗi rỗng

array = ['H','E','L','L','O']

connector = ""

joined_string = connector.join(array)

print(joined_string)

Output:
HELLO
Python Developer được hỏi... 06/06/2023

Toán tử tạo từ điển từ biến khả lặp (dictionary comprehension) là gì?

1 câu trả lời

Đây là một cách tạo 1 từ điển trong Python. Nó tạo ra một từ điển bằng cách sáp nhập 2 bộ dữ liệu ở dạng danh sách (list) hoặc mảng (array.)

Dữ liệu của một trong hai list / array sẽ trở thành 'từ khoá' của từ điển, cái còn lại là giá trị. Mỗi 'từ khoá' sẽ là khoá nhận dạng duy nhất cho 1 giá trị, và do đó, kích thước của 2 list/array nên bằng nhau.

Cú pháp chung:

                            tu_dien_moi = {key:value for (key, value) in bien_kha_lap}

Ví dụ:

Ví dụ dưới đây áp dụng cho CSDL của trường đại học và sử dụng phương pháp sáp nhập đơn giản (không có điều kiện.) Giả sử CSDL chưa nhiều dữ liệu như địa chỉ, điểm, học phí, mã số SV, v.v... Bây giờ chúng ta cần xác định mỗi SV duy nhất và tạo ra một từ điển chỉ chứa thông tin các sinh viên. Quyết định của chúng ta đơn giản dựa vào 2 câu hỏi:

Từ khoá (key) nên là thông tin nào?

Giá trị (value) nên là thông tin nào?

Ở đây chúng ta chọn Mã số SV làm từ khoá và tên sinh viên là giá trị, vì mã số SV là duy nhất, còn tên có thể bị trùng.

rollNumbers =[122,233,353,456]

names = ['alex','bob','can', 'don']

NewDictionary={ i:j for (i,j) in zip (rollNumbers,names)}

print(NewDictionary)

Output:
 
{456: 'don', 233: 'bob', 122: 'alex', 353: 'can'}
Python Developer được hỏi... 06/06/2023

Làm sao để tạo ra bản sao sâu (deep copy) trong Python?

1 câu trả lời

Tạo bản sao sâu chỉ việc sao chép một đối tượng. Khi dùng toán tử gán (=,) chúng ta không tạo ra bản sao của một đối tượng, mà thay vào đó, chúng ra chỉ trỏ biến của mình vào cùng một đối tượng (tạo bản sao nông.) Điều này nghĩa là thay đổi giá trị của một biến cũng sẽ ảnh hưởng đến giá trị của biến kia, vì nó cùng trỏ về một đối tượng. Sự khác biệt giữa bản sao sâu và bản sao nông chỉ áp dụng với các đối tượng chứa các đối tượng khác như danh sách (list) và các biến thực thể của Lớp.

Phương pháp

Để tạo bản sao sâu của một đối tượng, chúng ta nhập vào chương trình module copy trong Python. Module này có chứa hàm deepcopy() giúp đơn giản hoá công việc của chúng ta.

Cú pháp

Hàm này nhận đối tượng chúng ta muốn tạo bản sao làm tham số, và trả về bản sao của đối tượng đó.

Tài liệu VietJack

import copy

# Using '=' operator

x = [1, 2, 3]

y = x

x[0] = 5 # value of 'y' also changes as it is the SAME object

x[1] = 15

print "Shallow copy: ", y

# Using copy.deepcopy()

a = [10, 20, 30]

b = copy.deepcopy(a)

a[1] = 70 # value of 'b' does NOT change because it is ANOTHER object

print "Deep copy: ", b

Output:

Shallow copy: [5, 15, 3]

Deep copy: [10, 20, 30]

Python Developer được hỏi... 06/06/2023

Làm sao để kiểm tra xem một từ điển có chứa một từ khoá nào đó?

1 câu trả lời

Kiểm tra xem một từ khoá có trong từ điển hay không trước khi truy xuất giá trị của từ khoá đó trong từ điển là một cách thực hành an toàn. Để làm việc này, Python cung cấp 2 hàm sẵn có (built-in):

  • Hàm has_key():
  • Câu lệnh if-in

Hàm has_key() trả về kết quả True nếu từ khoá có trong từ điển, và False trong trường hợp ngược lại.

Fruits = {'a': "Apple", 'b':"Banana", 'c':"Carrot"}

key_to_lookup = 'a'

if Fruits.has_key(key_to_lookup):

print "Key exists"

else:

print "Key does not exist"

Output: Key exists

Câu lệnh if-in kiểm tra xem một từ khoá có trong từ điển hay không

Fruits = {'a': "Apple", 'b':"Banana", 'c':"Carrot"}

key_to_lookup = 'a'

if key_to_lookup in Fruits:

print "Key exists"

else:

print "Key does not exist"

Output: Key exists
Python Developer được hỏi... 06/06/2023

Bạn thực hiện kỹ thuật nhớ kết quả tạm (memoization) trong Python thế nào?

1 câu trả lời

Memoization là một kỹ thuật cải thiện tốc độ tính toán của các chương trình sử dụng thuật toán đệ quy (recursive.) Kỹ thuật Memoization lưu các kết quả tính toán của các bước trung gian trong một mảng, và truy xuất chúng trong các bước đệ quy sau, thay vì phải tính lại kết quả của các bước trước đó.

Để minh hoạ, hãy xem đoạn mã rất tốn kém về mặt tính toán sau:

# Fibonacci Numbers

def fib(num):

if num == 0:
return 0
elif num == 1:
return 1
return fib(num - 1) + fib(n - 2)
Ứng dụng kỹ thuật nhớ tạm (memoization) có thể được thực hiện qua việc dùng vật trang trí Python như sau:

import timeit

def memoize_fib(func):

cache = {} def inner(arg):

if arg not in cache:

cache[arg] = func(arg)

return cache[arg]

return inner


def fib(num):

if num == 0:

return 0 elif num == 1:

return 1 else:

return fib(num-1) + fib(num-2)

fib = memoize_fib(fib)


print(timeit.timeit('fib(30)', globals=globals(), number=1))

print(timeit.timeit('fib(30)', globals=globals(), number=1))

print(timeit.timeit('fib(30)', globals=globals(), number=1))

Output:
4.9035000301955733e-05
1.374000021314714e-06
1.2790005712304264e-06
Python Developer được hỏi... 06/06/2023

Bạn xếp thứ tự từ điển trong Python thế nào?

1 câu trả lời

Chúng ta có thể xếp thứ tự từ điển theo 'từ khoá' hoặc theo 'giá trị' dùng hàm sorted(). Trước hết, chúng ta cần biết cách lấy dữ liệu từ từ điển để truyền vào hàm sorted. Có 3 cách lấy dữ liệu từ từ điển:

  • tu_dien.keys(): trả về các từ khoá theo thứ tự bất định.
  • tu_dien.values(): trả về một danh sách các giá trị.
  • tu_dien.items(): trả về dữ liệu dưới dạng một danh sách các cặp từ khoá - giá trị.

Cú pháp:

Sorted(data[bắt buộc], key[tuỳ chọn], reverse[tuỳ chọn])

Hàm sorted nhận một tham số bắt buộc và 2 tham số tuỳ chọn.

  • Data (mandatory): Dữ liệu cần xếp thứ tự. Dữ liệu truyền vào sẽ được lấy từ 1 trong 3 cách ở trên.
  • Key (optional): Một hàm (hay tiêu chuẩn) chúng ta muốn xếp thứ tự theo. Chẳng hạn, sắp xếp thứ tự các chuỗi theo độ dài của chúng, hoặc theo một hàm tuỳ ý. Hàm này sẽ được áp dụng với từng thành phần trong danh sách và kết quả của chúng sẽ được sử dụng để xếp thứ tự. Nếu tham số này trống, hàm sorted sẽ xếp thứ tự theo giá trị ban đầu của dữ liệu.
  • Reverse (optional): Tham số thứ ba là True sẽ trả về kết quả theo thứ tự giảm dần (descending.) Để trống sẽ trả về kết quả theo thứ tự tăng dần (ascending)

keys()

dict = {}

dict['1'] = 'apple'

dict['3'] = 'orange'

dict['2'] = 'pango'

 

lst = dict.keys()

 

#Sorted by key

print("Sorted by key: ", sorted(lst))

values()

dict = {}

dict['1'] = 'apple'

dict['3'] = 'orange'

dict['2'] = 'pango'

 

lst = dict.values()

 

#Sorted by value print("Sorted by value: ", sorted(lst))

items()

dict = {}

dict['1'] = 'apple'

dict['3'] = 'orange'

dict['2'] = 'strawberry' lst = dict.items()

 

# Sorted by key

print("Sorted by key: ", sorted(lst, key = lambda x : x[0]))

 

#Sorted by value

print("Sorted by value: ", sorted(lst, key = lambda x : x[1]))

 
Python Developer được hỏi... 05/06/2023

Bạn dùng hàm any() và all() thế nào và khi nào?

1 câu trả lời

Hàm any() là gì?

any() là một hàm nhận một biến khả lặp (iterable) như 1 danh sách (list), 1 danh sách cố định (tuple,) 1 bộ (set,) làm tham số và trả về kết quả True nếu bất kỳ thành phần nào trong biến khả lặp đó có giá trị True, nhưng trả về giá trị False nếu tất cả các thành phần có giá trị False.

Truyền biến khả lặp cho hàm any() để kiểm tra xem có thành phần nào có giá trị True hay không có thể được thực hiện như sau:

one_truth = [True, False, False]

three_lies = [0, '', None]

print(any(one_truth))

print(any(three_lies))

Output:
True
False

Lệnh in đầu tiên trả về kết quả True vì một trong những thành phần của biến one_truth có giá trị True.

Trong khi đó, lệnh in thứ hai trả về kết quả False vì không một thành phần nào trong biến three_lies có giá trị True.

Dùng hàm any() để kiểm tra một chuỗi dài các điều kiện or

Hàm all() là gì?

all() là một hàm Python khác nhận một biến khả lặp và trả về kết quả True nếu tất cả các thành phần trong biến có giá trị True. Nếu bất kỳ thành phần nào trong biến khả lặp có giá trị False, hàm all() sẽ trả về kết quả False.

all_true = [True, 1, 'a', object()]

one_true = [True, False, False, 0]

all_false = [None, '', False, 0]

print(all(all_true))

print(all(one_true))

print(all(all_false))

 
Output:
True
False
False

Câu lệnh đầu tiên trả về kết quả True vì all_true bao gồm tất cả các thành phần có giá trị True.

Truyền biến one_true cho hàm all() trả về kết quả False vì tham số có 1 chứa 1 hoặc nhiều hơn một giá trị False.

Và sau cùng, truyền biến all_false cho hàm all(), chúng ta nhận được kết quả False vì tham số bao gồm một hoặc nhiều hơn giá trị False.

Dùng hàm all() khi cần kiểm tra một chuỗi dài các điều kiện and

Python Developer được hỏi... 05/06/2023

Python Docstring là gì?

1 câu trả lời

Python docstrings là một cách thích hợp để gắn tài liệu thuyết minh mã lập trình với:

  • Đơn nguyên (modules) Python
  • Hàm Python
  • Lớp (Class) Python

Nó là đoạn văn bản nhất định cho đoạn mã gắn liền với nó. Không như những lời bình lập trình (code comments,) docstring mô tả việc mà một hàm thực hiện, không phải cách nó thực hiện.

docstring có thể được truy xuất bằng cách gọi hàm:

  • __doc__ của đối tượng
  • help
Đang xem 21 - 40 trong 76 câu hỏi phỏng vấn

Xem câu hỏi phỏng vấn cho các công việc tương tự

Nhắn tin Zalo