Câu hỏi phỏng vấn Python cho Nhà phân tích dữ liệu

Cách đây không lâu, tôi đã bắt đầu một vai trò mới là “Nhà khoa học dữ liệu”, hóa ra là “Kỹ sư Python” trong thực tế

Show

Tôi sẽ chuẩn bị tốt hơn nếu tôi tìm hiểu trước về vòng đời luồng của Python thay vì các hệ thống đề xuất

Với tinh thần đó, đây là những câu hỏi và câu trả lời phỏng vấn/chuẩn bị công việc bằng trăn của tôi. Hầu hết các nhà khoa học dữ liệu viết rất nhiều mã nên điều này áp dụng cho cả nhà khoa học và kỹ sư

Cho dù bạn đang phỏng vấn ứng viên, chuẩn bị nộp đơn xin việc hay chỉ mới bắt đầu học Python, tôi nghĩ danh sách này sẽ rất hữu ích

Câu hỏi không có thứ tự. Hãy bắt đầu nào

1. Sự khác biệt giữa một danh sách và một tuple là gì?

Tôi đã được hỏi câu hỏi này trong mọi cuộc phỏng vấn về trăn/khoa học dữ liệu mà tôi từng tham gia. Biết rõ câu trả lời như lòng bàn tay

  • Danh sách có thể thay đổi. Chúng có thể được sửa đổi sau khi tạo
  • Tuples là bất biến. Khi một tuple được tạo, nó không thể thay đổi
  • Danh sách có thứ tự. Chúng là một chuỗi có thứ tự, điển hình là cùng loại đối tượng. I E. tất cả tên người dùng được sắp xếp theo ngày tạo,
    def my_name():
    print('chris')
    def friends_name():
    print('naruto')
    my_name()
    friends_name()
    #=> chris
    #=> naruto
    9
  • Tuples có cấu trúc. Các loại dữ liệu khác nhau có thể tồn tại ở mỗi chỉ mục. I E. một bản ghi cơ sở dữ liệu trong bộ nhớ,
    @logging
    def my_name():
    print('chris')
    @logging
    def friends_name():
    print('naruto')
    my_name()
    friends_name()
    #=> called.
    #=> chris
    #=> called.
    #=> naruto
    0

2. Nội suy chuỗi được thực hiện như thế nào?

Không cần nhập lớp

@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')
my_name()
friends_name()
#=> called.
#=> chris
#=> called.
#=> naruto
1, có 3 cách để nội suy chuỗi

name = 'Chris'# 1. f strings
print(f'Hello {name}')
# 2. % operator
print('Hey %s %s' % (name, name))
# 3. format
print(
"My name is {}".format((name))
)

3. Sự khác biệt giữa “là” và “==” là gì?

Đầu sự nghiệp trăn của tôi, tôi cho rằng đây là những lỗi giống nhau. Vì vậy, đối với hồ sơ,

@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')
my_name()
friends_name()
#=> called.
#=> chris
#=> called.
#=> naruto
2 kiểm tra danh tính và
@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')
my_name()
friends_name()
#=> called.
#=> chris
#=> called.
#=> naruto
3 kiểm tra sự bình đẳng

Chúng ta sẽ đi qua một ví dụ. Tạo một số danh sách và gán chúng cho tên. Lưu ý rằng

@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')
my_name()
friends_name()
#=> called.
#=> chris
#=> called.
#=> naruto
4 trỏ đến cùng một đối tượng như
@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')
my_name()
friends_name()
#=> called.
#=> chris
#=> called.
#=> naruto
5 ở bên dưới

________số 8_______

Kiểm tra sự bằng nhau và lưu ý rằng tất cả chúng đều bằng nhau

print(a == b)
print(a == c)
#=> True
#=> True

Nhưng họ có cùng bản sắc không?

print(a is b)
print(a is c)
#=> True
#=> False

Chúng tôi có thể xác minh điều này bằng cách in id đối tượng của họ

print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624

@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')
my_name()
friends_name()
#=> called.
#=> chris
#=> called.
#=> naruto
6 có một
@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')
my_name()
friends_name()
#=> called.
#=> chris
#=> called.
#=> naruto
7 khác với
@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')
my_name()
friends_name()
#=> called.
#=> chris
#=> called.
#=> naruto
5 và
@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')
my_name()
friends_name()
#=> called.
#=> chris
#=> called.
#=> naruto
4

4. một trang trí là gì?

Một câu hỏi khác tôi đã được hỏi trong mọi cuộc phỏng vấn. Bản thân nó xứng đáng có một bài đăng, nhưng bạn đã sẵn sàng nếu bạn có thể xem qua cách viết ví dụ của riêng mình

Trình trang trí cho phép thêm chức năng vào chức năng hiện có bằng cách chuyển chức năng hiện có đó cho trình trang trí, chức năng này thực thi chức năng hiện có cũng như mã bổ sung

Chúng tôi sẽ viết một trình trang trí ghi nhật ký khi một chức năng khác được gọi

Viết chức năng trang trí. Cái này nhận một hàm,

[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0, làm đối số. Nó cũng định nghĩa một hàm,
[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1, gọi hàm
[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2 và thực thi một số mã,
[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3. Sau đó, nó trả về hàm mà nó đã xác định

def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called

Hãy viết các chức năng khác mà cuối cùng chúng ta sẽ thêm trình trang trí vào (nhưng chưa)

def my_name():
print('chris')
def friends_name():
print('naruto')
my_name()
friends_name()
#=> chris
#=> naruto

Bây giờ thêm trang trí cho cả hai

@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')
my_name()
friends_name()
#=> called.
#=> chris
#=> called.
#=> naruto

Xem cách giờ đây chúng ta có thể dễ dàng thêm nhật ký vào bất kỳ chức năng nào chúng ta viết chỉ bằng cách thêm

[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4 phía trên nó

5. Giải thích chức năng phạm vi

Phạm vi tạo ra một danh sách các số nguyên và có 3 cách để sử dụng nó

Hàm nhận từ 1 đến 3 đối số. Lưu ý rằng tôi đã bao gồm từng cách sử dụng trong phần hiểu danh sách để chúng tôi có thể thấy các giá trị được tạo

[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
5. tạo số nguyên từ 0 đến số nguyên “dừng”

[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
6. tạo số nguyên từ số nguyên “bắt đầu” đến số nguyên “dừng”

[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]

[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
7. tạo các số nguyên từ “bắt đầu” đến “dừng” trong khoảng thời gian của “bước”

a = [1,2,3]
b = a
c = [1,2,3]
0

Cảm ơn Searge Boremchuq đã đề xuất một cách Pythonic hơn để thực hiện việc này

a = [1,2,3]
b = a
c = [1,2,3]
1

6. Định nghĩa một lớp có tên car với 2 thuộc tính là “color” và “speed”. Sau đó tạo một thể hiện và trả về tốc độ

a = [1,2,3]
b = a
c = [1,2,3]
2

7. Sự khác biệt giữa các phương thức thể hiện, tĩnh và lớp trong python là gì?

Phương thức sơ thẩm. chấp nhận tham số

[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
8 và liên quan đến một thể hiện cụ thể của lớp

phương pháp tĩnh. sử dụng trình trang trí

[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
9, không liên quan đến một thể hiện cụ thể và độc lập (không sửa đổi các thuộc tính của lớp hoặc thể hiện)

phương pháp lớp. chấp nhận tham số

[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
0 và có thể tự sửa đổi lớp đó

Chúng tôi sẽ minh họa sự khác biệt xung quanh một lớp học hư cấu

[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
1

a = [1,2,3]
b = a
c = [1,2,3]
3

Lớp

[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
1 có thuộc tính,
[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
3, được đặt thành
[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
4 theo mặc định. Mỗi phiên bản của
[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
1 được khởi tạo với thuộc tính
[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
6. Nó cũng có 3 phương thức, một phương thức thể hiện, một phương thức tĩnh và một phương thức lớp

Hãy khởi tạo một thể hiện của quán cà phê với

[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
6 của
[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
8. Sau đó gọi phương thức thể hiện
[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
9

a = [1,2,3]
b = a
c = [1,2,3]
4

Bây giờ gọi phương thức tĩnh. Các phương thức tĩnh không thể sửa đổi trạng thái lớp hoặc thể hiện nên chúng thường được sử dụng cho các chức năng tiện ích, ví dụ: thêm 2 số. Chúng tôi sử dụng của chúng tôi để kiểm tra thời tiết.

a = [1,2,3]
b = a
c = [1,2,3]
00. Tuyệt

a = [1,2,3]
b = a
c = [1,2,3]
5

Bây giờ, hãy sử dụng phương thức lớp để sửa đổi đặc sản của quán cà phê và sau đó

[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
9

a = [1,2,3]
b = a
c = [1,2,3]
6

Lưu ý cách

[i for i in range(2,10)]
#=> [2, 3, 4, 5, 6, 7, 8, 9]
9 được sử dụng để tạo thành
a = [1,2,3]
b = a
c = [1,2,3]
03 nhưng bây giờ tạo thành
a = [1,2,3]
b = a
c = [1,2,3]
04

8. Đâu là sự khác biệt giữa “func” và “func()”?

Mục đích của câu hỏi này là để xem bạn có hiểu rằng tất cả các chức năng cũng là đối tượng trong python

a = [1,2,3]
b = a
c = [1,2,3]
7

[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0 là đối tượng đại diện cho hàm có thể được gán cho một biến hoặc được truyền cho hàm khác.
[i for i in range(10)]
#=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2 với dấu ngoặc đơn gọi hàm và trả về kết quả đầu ra

9. Giải thích cách chức năng bản đồ hoạt động

a = [1,2,3]
b = a
c = [1,2,3]
07 trả về một đối tượng bản đồ (một trình vòng lặp) có thể lặp lại các giá trị được trả về từ việc áp dụng một hàm cho mọi phần tử trong một chuỗi. Đối tượng bản đồ cũng có thể được chuyển đổi thành danh sách nếu cần

a = [1,2,3]
b = a
c = [1,2,3]
8

Ở trên, tôi đã thêm 3 vào mọi phần tử trong danh sách

Một độc giả đã đề xuất triển khai Pythonic hơn. Cảm ơn Chrisjan Wust

a = [1,2,3]
b = a
c = [1,2,3]
9

Ngoài ra, cảm ơn Michael Graeme Short vì đã sửa chữa

10. Giải thích cách thức hoạt động của chức năng rút gọn

Điều này có thể khiến bạn khó quấn đầu cho đến khi bạn sử dụng nó một vài lần

a = [1,2,3]
b = a
c = [1,2,3]
08 nhận một hàm và một chuỗi rồi lặp qua chuỗi đó. Trên mỗi lần lặp, cả phần tử hiện tại và đầu ra từ phần tử trước đó đều được chuyển đến hàm. Cuối cùng, một giá trị duy nhất được trả về

print(a == b)
print(a == c)
#=> True
#=> True
0

a = [1,2,3]
b = a
c = [1,2,3]
09 được trả lại là tổng của
a = [1,2,3]
b = a
c = [1,2,3]
10

11. Giải thích cách thức hoạt động của chức năng lọc

Bộ lọc thực sự làm những gì tên nói. Nó lọc các phần tử theo trình tự

Mỗi phần tử được truyền cho một hàm, hàm này được trả về theo trình tự đã xuất nếu hàm trả về

a = [1,2,3]
b = a
c = [1,2,3]
11 và bị loại bỏ nếu hàm trả về
a = [1,2,3]
b = a
c = [1,2,3]
12

print(a == b)
print(a == c)
#=> True
#=> True
1

Lưu ý cách tất cả các phần tử không chia hết cho 2 đã bị xóa

12. Python gọi theo tham chiếu hay gọi theo giá trị?

Hãy sẵn sàng đi xuống một lỗ hổng ngữ nghĩa nếu bạn google câu hỏi này và đọc một vài trang đầu

Tóm lại, tất cả các tên gọi theo tham chiếu, nhưng một số vị trí bộ nhớ chứa các đối tượng trong khi những vị trí khác giữ con trỏ tới các vị trí bộ nhớ khác

print(a == b)
print(a == c)
#=> True
#=> True
2

Hãy xem cách nó hoạt động với các chuỗi. Chúng tôi sẽ khởi tạo một tên và đối tượng, chỉ các tên khác cho nó. Sau đó xóa tên

print(a == b)
print(a == c)
#=> True
#=> True
3

Những gì chúng tôi thấy là tất cả các tên này trỏ đến cùng một đối tượng trong bộ nhớ, không bị ảnh hưởng bởi

a = [1,2,3]
b = a
c = [1,2,3]
13

Đây là một ví dụ thú vị khác với hàm

print(a == b)
print(a == c)
#=> True
#=> True
4

Lưu ý cách thêm một

a = [1,2,3]
b = a
c = [1,2,3]
14 vào chuỗi bên trong hàm đã tạo ra một tên mới VÀ một đối tượng mới. Mặc dù tên mới có cùng “tên” với tên hiện tại

Cảm ơn Micheal P. Reilly cho các sửa chữa

13. Làm thế nào để đảo ngược một danh sách?

Lưu ý cách

a = [1,2,3]
b = a
c = [1,2,3]
15 được gọi trong danh sách và thay đổi nó. Nó không tự trả về danh sách bị đột biến

print(a == b)
print(a == c)
#=> True
#=> True
5

14. Phép nhân chuỗi hoạt động như thế nào?

Hãy xem kết quả của phép nhân chuỗi

a = [1,2,3]
b = a
c = [1,2,3]
16 với 3

print(a == b)
print(a == c)
#=> True
#=> True
6

Chuỗi được nối với chính nó 3 lần

15. Làm thế nào để nhân danh sách làm việc?

Hãy xem kết quả của phép nhân một danh sách,

a = [1,2,3]
b = a
c = [1,2,3]
17 với 2

print(a == b)
print(a == c)
#=> True
#=> True
7

Một danh sách được xuất ra có chứa nội dung của [1,2,3] được lặp lại hai lần

16. "Bản thân" đề cập đến điều gì trong một lớp học?

Bản thân đề cập đến thể hiện của chính lớp đó. Đó là cách chúng tôi cấp cho các phương thức quyền truy cập và khả năng cập nhật đối tượng mà chúng thuộc về

Bên dưới, việc chuyển self tới

a = [1,2,3]
b = a
c = [1,2,3]
18 cho chúng ta khả năng đặt
a = [1,2,3]
b = a
c = [1,2,3]
19 của một phiên bản khi khởi tạo

print(a == b)
print(a == c)
#=> True
#=> True
8

17. Làm thế nào bạn có thể nối các danh sách trong python?

Thêm 2 danh sách lại với nhau để nối chúng. Lưu ý rằng các mảng không hoạt động theo cùng một cách

print(a == b)
print(a == c)
#=> True
#=> True
9

18. Sự khác biệt giữa một bản sao nông và sâu là gì?

Chúng ta sẽ thảo luận điều này trong ngữ cảnh của một đối tượng có thể thay đổi, một danh sách. Đối với các đối tượng bất biến, nông và sâu không liên quan

Chúng ta sẽ đi qua 3 kịch bản

i) Tham chiếu đối tượng ban đầu. Thao tác này trỏ một tên mới,

a = [1,2,3]
b = a
c = [1,2,3]
20, tới cùng một vị trí trong bộ nhớ mà
a = [1,2,3]
b = a
c = [1,2,3]
21 đã trỏ tới. Vì vậy, bất kỳ thay đổi nào chúng tôi thực hiện đối với
a = [1,2,3]
b = a
c = [1,2,3]
21 cũng xảy ra đối với
a = [1,2,3]
b = a
c = [1,2,3]
20

print(a is b)
print(a is c)
#=> True
#=> False
0

ii) Tạo một bản sao nông của bản gốc. Chúng ta có thể làm điều này với hàm tạo

a = [1,2,3]
b = a
c = [1,2,3]
24 hoặc hàm tạo Pythonic hơn là
a = [1,2,3]
b = a
c = [1,2,3]
25 (cảm ơn Chrisjan Wust. )

Một bản sao nông tạo ra một đối tượng mới, nhưng lấp đầy nó bằng các tham chiếu đến bản gốc. Vì vậy, việc thêm một đối tượng mới vào bộ sưu tập ban đầu,

a = [1,2,3]
b = a
c = [1,2,3]
26, không lan truyền tới
a = [1,2,3]
b = a
c = [1,2,3]
27, nhưng sửa đổi một trong các đối tượng trong
a = [1,2,3]
b = a
c = [1,2,3]
26 sẽ lan truyền tới
a = [1,2,3]
b = a
c = [1,2,3]
27

print(a is b)
print(a is c)
#=> True
#=> False
1

iii) Tạo một bản sao sâu. Điều này được thực hiện với

a = [1,2,3]
b = a
c = [1,2,3]
30. 2 đối tượng bây giờ hoàn toàn độc lập và thay đổi thành không ảnh hưởng đến đối tượng kia

print(a is b)
print(a is c)
#=> True
#=> False
2

19. Sự khác biệt giữa danh sách và mảng là gì?

Ghi chú. Thư viện chuẩn của Python có một đối tượng mảng nhưng ở đây tôi đang đề cập cụ thể đến mảng Numpy thường được sử dụng

  • Danh sách tồn tại trong thư viện tiêu chuẩn của python. Mảng được định nghĩa bởi Numpy
  • Danh sách có thể được điền với các loại dữ liệu khác nhau ở mỗi chỉ mục. Mảng yêu cầu các phần tử đồng nhất
  • Số học trên danh sách thêm hoặc xóa các phần tử khỏi danh sách. Số học trên các hàm mảng trên mỗi đại số tuyến tính
  • Mảng cũng sử dụng ít bộ nhớ hơn và có nhiều chức năng hơn đáng kể

Tôi đã viết một bài toàn diện khác về mảng

20. Làm thế nào để nối hai mảng?

Hãy nhớ rằng, mảng không phải là danh sách. Mảng là từ Numpy và các hàm số học như đại số tuyến tính

Chúng ta cần sử dụng chức năng nối của Numpy để làm điều đó

print(a is b)
print(a is c)
#=> True
#=> False
3

21. Bạn thích gì về Python?

Lưu ý rằng đây là một câu hỏi rất chủ quan và bạn sẽ muốn sửa đổi câu trả lời của mình dựa trên vai trò đang tìm kiếm

Python rất dễ đọc và có một cách Pythonic để làm mọi thứ, nghĩa là một cách ưu tiên rõ ràng và ngắn gọn

Tôi muốn đối chiếu điều này với Ruby, nơi thường có nhiều cách để làm điều gì đó mà không có hướng dẫn nào được ưu tiên hơn

22. Thư viện yêu thích của bạn trong Python là gì?

Còn chủ quan thì xem câu 21

Khi làm việc với nhiều dữ liệu, không có gì hữu ích bằng gấu trúc giúp thao tác và trực quan hóa dữ liệu trở nên dễ dàng

23. Đặt tên cho các đối tượng có thể thay đổi và không thể thay đổi

Bất biến có nghĩa là không thể sửa đổi trạng thái sau khi tạo. Ví dụ là. int, float, bool, string và tuple

Có thể thay đổi có nghĩa là trạng thái có thể được sửa đổi sau khi tạo. Ví dụ là danh sách, dict và thiết lập

24. Làm thế nào để bạn làm tròn một số đến 3 chữ số thập phân?

Sử dụng hàm

a = [1,2,3]
b = a
c = [1,2,3]
31

print(a is b)
print(a is c)
#=> True
#=> False
4

25. Làm thế nào để bạn cắt một danh sách?

Ký hiệu cắt lát có 3 đối số,

a = [1,2,3]
b = a
c = [1,2,3]
32, trong đó bước là khoảng mà tại đó các phần tử được trả về

print(a is b)
print(a is c)
#=> True
#=> False
5

26. ngâm chua là gì?

Pickling là phương thức tiếp theo để tuần tự hóa và hủy tuần tự hóa các đối tượng trong Python

Trong ví dụ dưới đây, chúng tôi tuần tự hóa và hủy tuần tự hóa danh sách từ điển

print(a is b)
print(a is c)
#=> True
#=> False
6

27. Sự khác biệt giữa từ điển và JSON là gì?

Dict là kiểu dữ liệu python, một tập hợp các khóa và giá trị được lập chỉ mục nhưng không có thứ tự

JSON chỉ là một chuỗi tuân theo một định dạng được chỉ định và được dùng để truyền dữ liệu

28. Bạn đã sử dụng ORM nào trong Python?

ORM (ánh xạ quan hệ đối tượng) ánh xạ các mô hình dữ liệu (thường là trong một ứng dụng) tới các bảng cơ sở dữ liệu và đơn giản hóa các giao dịch cơ sở dữ liệu

SQLAlchemy thường được sử dụng trong ngữ cảnh của Flask và Django có ORM riêng

29. Làm thế nào để bất kỳ () và tất cả () hoạt động?

Any lấy một chuỗi và trả về true nếu bất kỳ phần tử nào trong chuỗi là đúng

Tất cả chỉ trả về true nếu tất cả các phần tử trong chuỗi đều đúng

print(a is b)
print(a is c)
#=> True
#=> False
7

30. Là từ điển hoặc danh sách nhanh hơn để tra cứu?

Tra cứu một giá trị trong danh sách mất O(n) thời gian vì toàn bộ danh sách cần được lặp đi lặp lại cho đến khi tìm thấy giá trị

Tra cứu một khóa trong từ điển mất O(1) thời gian vì đó là bảng băm

Điều này có thể tạo ra sự khác biệt lớn về thời gian nếu có nhiều giá trị nên từ điển thường được khuyến nghị cho tốc độ. Nhưng chúng có những hạn chế khác như cần các khóa duy nhất

31. Sự khác biệt giữa một mô-đun và một gói là gì?

Mô-đun là một tệp (hoặc tập hợp các tệp) có thể được nhập cùng nhau

print(a is b)
print(a is c)
#=> True
#=> False
8

Một gói là một thư mục của các mô-đun

print(a is b)
print(a is c)
#=> True
#=> False
9

Vì vậy, các gói là các mô-đun, nhưng không phải tất cả các mô-đun đều là các gói

32. Làm cách nào để tăng và giảm một số nguyên trong Python?

Tăng và giảm có thể được thực hiện với

a = [1,2,3]
b = a
c = [1,2,3]
33 và
a = [1,2,3]
b = a
c = [1,2,3]
34

print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
0

33. Làm cách nào để trả về số nhị phân của một số nguyên?

Sử dụng hàm

a = [1,2,3]
b = a
c = [1,2,3]
35

print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
1

34. Làm cách nào để xóa các phần tử trùng lặp khỏi danh sách?

Điều này có thể được thực hiện bằng cách chuyển đổi danh sách thành một tập hợp rồi quay lại danh sách

print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
2

Lưu ý rằng các bộ sẽ không nhất thiết duy trì thứ tự của danh sách

35. Làm cách nào để kiểm tra xem một giá trị có tồn tại trong danh sách không?

Sử dụng

a = [1,2,3]
b = a
c = [1,2,3]
36

print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
3

36. Sự khác biệt giữa nối thêm và mở rộng là gì?

a = [1,2,3]
b = a
c = [1,2,3]
37 thêm giá trị vào danh sách trong khi
a = [1,2,3]
b = a
c = [1,2,3]
38 thêm giá trị trong danh sách khác vào danh sách

print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
4

37. Cách lấy giá trị tuyệt đối của một số nguyên?

Điều này có thể được thực hiện với chức năng

a = [1,2,3]
b = a
c = [1,2,3]
39

print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
5

38. Làm cách nào để kết hợp hai danh sách thành một danh sách các bộ dữ liệu?

Bạn có thể sử dụng hàm

a = [1,2,3]
b = a
c = [1,2,3]
40 để kết hợp các danh sách thành một danh sách các bộ. Điều này không bị hạn chế chỉ sử dụng 2 danh sách. Nó cũng có thể được thực hiện với 3 hoặc nhiều hơn

print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
6

39. Làm cách nào bạn có thể sắp xếp từ điển theo khóa, theo thứ tự bảng chữ cái?

Bạn không thể "sắp xếp" một từ điển vì các từ điển không có thứ tự nhưng bạn có thể trả về một danh sách các bộ được sắp xếp có các khóa và giá trị có trong từ điển

print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
7

40. Làm thế nào để một lớp kế thừa từ một lớp khác trong Python?

Trong ví dụ dưới đây,

a = [1,2,3]
b = a
c = [1,2,3]
41, kế thừa từ
a = [1,2,3]
b = a
c = [1,2,3]
42. Và cùng với sự kế thừa đó là các phương thức thể hiện của lớp cha

print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
8

41. Làm cách nào bạn có thể xóa tất cả khoảng trắng khỏi chuỗi?

Cách dễ nhất là tách chuỗi trên khoảng trắng rồi nối lại mà không có dấu cách

print(id(a))
print(id(b))
print(id(c))
#=> 4369567560
#=> 4369567560
#=> 4369567624
9

2 độc giả đã đề xuất một cách Pythonic hơn để xử lý việc này theo các đặc tính của Python mà

a = [1,2,3]
b = a
c = [1,2,3]
43. Nó cũng nhanh hơn vì python không tạo đối tượng danh sách mới. Cảm ơn Евгений Крамаров và Chrisjan Wust

def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
0

42. Tại sao bạn lại sử dụng enumerate() khi lặp trên một chuỗi?

a = [1,2,3]
b = a
c = [1,2,3]
44 cho phép theo dõi chỉ mục khi lặp qua một chuỗi. Nó phức tạp hơn là xác định và tăng một số nguyên đại diện cho chỉ mục

def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
1

43. Sự khác biệt giữa vượt qua, tiếp tục và phá vỡ là gì?

a = [1,2,3]
b = a
c = [1,2,3]
45 có nghĩa là không làm gì cả. Chúng tôi thường sử dụng nó vì Python không cho phép tạo một lớp, hàm hoặc câu lệnh if mà không có mã bên trong nó

Trong ví dụ dưới đây, một lỗi sẽ được đưa ra mà không có mã bên trong

a = [1,2,3]
b = a
c = [1,2,3]
46, vì vậy chúng tôi sử dụng
a = [1,2,3]
b = a
c = [1,2,3]
45

def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
2

a = [1,2,3]
b = a
c = [1,2,3]
48 tiếp tục đến phần tử tiếp theo và tạm dừng thực thi phần tử hiện tại. Vì vậy, không bao giờ đạt được
a = [1,2,3]
b = a
c = [1,2,3]
49 đối với các giá trị trong đó
a = [1,2,3]
b = a
c = [1,2,3]
50

def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
3

a = [1,2,3]
b = a
c = [1,2,3]
51 ngắt vòng lặp và trình tự không còn được lặp lại nữa. Vì vậy các phần tử từ 3 trở đi không được in

def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
4

44. Chuyển vòng lặp for sau thành dạng hiểu danh sách

Vòng lặp

a = [1,2,3]
b = a
c = [1,2,3]
52 này

def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
5

trở thành

def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
6

Khả năng hiểu danh sách thường được chấp nhận là Pythonic hơn khi nó vẫn có thể đọc được

45. Cho ví dụ về toán tử bậc ba

Toán tử bậc ba là câu lệnh if/else một dòng

Cú pháp trông giống như

a = [1,2,3]
b = a
c = [1,2,3]
53

def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
7

46. Kiểm tra nếu một chuỗi chỉ chứa số

Bạn có thể sử dụng

a = [1,2,3]
b = a
c = [1,2,3]
54

def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
8

47. Kiểm tra xem một chuỗi chỉ chứa các chữ cái

Bạn có thể sử dụng

a = [1,2,3]
b = a
c = [1,2,3]
55

def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
9

48. Kiểm tra xem một chuỗi chỉ chứa số và chữ cái

Bạn có thể sử dụng

a = [1,2,3]
b = a
c = [1,2,3]
56

def my_name():
print('chris')
def friends_name():
print('naruto')
my_name()
friends_name()
#=> chris
#=> naruto
0

49. Trả về danh sách khóa từ từ điển

Điều này có thể được thực hiện bằng cách chuyển từ điển tới hàm tạo

a = [1,2,3]
b = a
c = [1,2,3]
24 của python,
a = [1,2,3]
b = a
c = [1,2,3]
24

def my_name():
print('chris')
def friends_name():
print('naruto')
my_name()
friends_name()
#=> chris
#=> naruto
1

50. Làm thế nào để bạn viết hoa và viết thường một chuỗi?

Bạn có thể sử dụng các phương thức chuỗi

a = [1,2,3]
b = a
c = [1,2,3]
59 và
a = [1,2,3]
b = a
c = [1,2,3]
60

def my_name():
print('chris')
def friends_name():
print('naruto')
my_name()
friends_name()
#=> chris
#=> naruto
2

51. Sự khác biệt giữa xóa, del và pop là gì?

a = [1,2,3]
b = a
c = [1,2,3]
61 xóa giá trị phù hợp đầu tiên

def my_name():
print('chris')
def friends_name():
print('naruto')
my_name()
friends_name()
#=> chris
#=> naruto
3

a = [1,2,3]
b = a
c = [1,2,3]
62 xóa phần tử theo chỉ mục

def my_name():
print('chris')
def friends_name():
print('naruto')
my_name()
friends_name()
#=> chris
#=> naruto
4

a = [1,2,3]
b = a
c = [1,2,3]
63 xóa một phần tử theo chỉ mục và trả về phần tử đó

def my_name():
print('chris')
def friends_name():
print('naruto')
my_name()
friends_name()
#=> chris
#=> naruto
5

52. Cho một ví dụ về hiểu từ điển

Dưới đây, chúng tôi sẽ tạo từ điển với các chữ cái trong bảng chữ cái làm khóa và lập chỉ mục trong bảng chữ cái làm giá trị

def my_name():
print('chris')
def friends_name():
print('naruto')
my_name()
friends_name()
#=> chris
#=> naruto
6

53. Xử lý ngoại lệ được thực hiện như thế nào trong Python?

Python cung cấp 3 từ để xử lý ngoại lệ,

a = [1,2,3]
b = a
c = [1,2,3]
64,
a = [1,2,3]
b = a
c = [1,2,3]
65 và
a = [1,2,3]
b = a
c = [1,2,3]
66

Cú pháp trông như thế này

def my_name():
print('chris')
def friends_name():
print('naruto')
my_name()
friends_name()
#=> chris
#=> naruto
7

Trong ví dụ đơn giản dưới đây, khối

a = [1,2,3]
b = a
c = [1,2,3]
64 không thành công vì chúng ta không thể cộng các số nguyên với các chuỗi. Khối
a = [1,2,3]
b = a
c = [1,2,3]
65 thiết lập
a = [1,2,3]
b = a
c = [1,2,3]
69 và sau đó khối
a = [1,2,3]
b = a
c = [1,2,3]
66 in ra
a = [1,2,3]
b = a
c = [1,2,3]
71

def my_name():
print('chris')
def friends_name():
print('naruto')
my_name()
friends_name()
#=> chris
#=> naruto
8

Phần kết luận

Bạn không bao giờ biết những câu hỏi nào sẽ xuất hiện trong các cuộc phỏng vấn và cách tốt nhất để chuẩn bị là có nhiều kinh nghiệm viết mã

Điều đó nói rằng, danh sách này sẽ bao gồm hầu hết mọi thứ bạn sẽ được hỏi về trăn cho vai trò nhà khoa học dữ liệu hoặc nhà phát triển python cấp cơ sở/trung cấp

Nhà phân tích dữ liệu nên biết gì về Python?

Kỹ năng chính .
Lập trình với Python để thực hiện phân tích thống kê phức tạp của các tập dữ liệu lớn
Thực hiện các truy vấn SQL và quét web để khám phá và trích xuất dữ liệu từ cơ sở dữ liệu và trang web
Thực hiện phân tích dữ liệu hiệu quả từ đầu đến cuối
Xây dựng trực quan hóa dữ liệu sâu sắc để kể chuyện

Những câu hỏi nào được hỏi trong một cuộc phỏng vấn phân tích dữ liệu?

Câu hỏi phỏng vấn nhà phân tích dữ liệu về thống kê .
Làm cách nào bạn có thể xử lý các giá trị bị thiếu trong tập dữ liệu?.
Giải thích thuật ngữ Phân phối chuẩn. .
Phân tích chuỗi thời gian là gì?.
Overfit khác với Underfitting như thế nào?.
Làm thế nào để bạn xử lý các ngoại lệ trong một tập dữ liệu?.
Các loại thử nghiệm Giả thuyết khác nhau là gì?

Các câu hỏi phỏng vấn Python cơ bản là gì?

Câu hỏi phỏng vấn cơ bản về Python dành cho người mới bắt đầu .
Trăn là gì?.
Python là một ngôn ngữ thông dịch. .
Sự khác biệt giữa danh sách và bộ dữ liệu là gì?.
pep8 là gì?.
Các tính năng chính của Python là gì?.
Bộ nhớ được quản lý trong Python như thế nào?.
PYTHONPATH là gì?.
Mô-đun Python là gì?

Python nào là tốt nhất cho nhà phân tích dữ liệu?

Pandas (Phân tích dữ liệu Python) là điều bắt buộc trong vòng đời của khoa học dữ liệu. Đây là thư viện Python phổ biến và được sử dụng rộng rãi nhất cho khoa học dữ liệu, cùng với NumPy trong matplotlib.