全程50分鐘,微信語音面試
先自我介紹,然後問一些Python相關的題目,Linux也有問一點,然後兩道代碼題,然後針對項目提問
大概題目
- 什麼是裝飾器
- 多進程、多線程、協程
- GIL鎖
- python設計思想(XXX面向對象)
這個問題那時候沒,大概是和Python的發展歷史和設計理念
Python的功能來源和設計理念
- python3.6中對字典的怎麼做到有序
- 迭代器和生成器的區別
生成器可看作是高級的迭代器
Python中生成器和迭代器的區別
- 怎麼實現一個迭代器
- numpy爲什麼這麼快
- linux下顯示所有圖片的命令(例如png)
ls *.png
ls | grep *.png
- LeetCode20. 有效的括號
急着寫代碼,沒有考慮到下面這種情況,而且也寫得很冗餘哎
輸入: “([)]”
輸出: false
class Solution(object):
def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack = []
dict1 = {'}':'{', ']':'[', ')':'('}
for i in s:
if i not in dict1:
stack.append(i)
elif not stack or dict1[i] != stack.pop():
return False
return not stack
- 寫一個實現最小堆的代碼
堆是完全二叉樹,不是平衡二叉樹,記混了。。
def minHeap(arr):
for start in range(len(arr)//2, -1, -1):
buildMinHeap(arr, start, len(arr) - 1)
return arr
def buildMinHeap(arr, start, end):
root = start
while True:
child = root * 2 + 1
if child > end:
break
if child + 1 <= end and arr[child + 1] < arr[child]:
child += 1
if arr[root] > arr[child]:
arr[root], arr[child] = arr[child], arr[root]
root = child
else:
break
-
介紹最近在做的項目
-
什麼是mAP,AP是什麼
- 還有什麼其他的衡量指標?什麼是accuracy?
機器學習常見的幾種評價指標:精確率(Precision)、召回率(Recall)、F值(F-measure)、ROC曲線、AUC、準確率(Accuracy)
收穫
- 問題沒聽懂就問面試官,不要急着回答
- 很多知識只是知道個表面,但是沒有深入理解,經不起追問
- 寫過的東西確實印象是比較深刻的,因爲之前寫過迭代器怎麼用,所以回答的時候比較流暢,看來學習知識還是得有輸出才能保證效果
- 代碼想清楚再寫
- Python還是太差了,需要系統地看一遍才行,手寫一遍代碼,跑個demo也好,只是瞭解個名字的話是沒有意義的。而且發現面試特別喜歡問高級的語法。
- 項目經歷也不是很出彩,多寫代碼,好好努力吧。