【面經】商湯Python算法開發實習生一面

全程50分鐘,微信語音面試

先自我介紹,然後問一些Python相關的題目,Linux也有問一點,然後兩道代碼題,然後針對項目提問

大概題目
  1. 什麼是裝飾器

一篇文章搞懂裝飾器所有用法(建議收藏)

  1. 多進程、多線程、協程

進程與線程的一個簡單解釋
python採用 多進程/多線程/協程 寫爬蟲以及性能對比,牛逼的分分鐘就將一個網站爬下來!

  1. GIL鎖

python GIL鎖問題

  1. python設計思想(XXX面向對象)

這個問題那時候沒,大概是和Python的發展歷史和設計理念
Python的功能來源和設計理念

  1. python3.6中對字典的怎麼做到有序

爲什麼從Python 3.6開始字典有序並效率更高
如何讓字典有序

  1. 迭代器和生成器的區別

生成器可看作是高級的迭代器
Python中生成器和迭代器的區別

  1. 怎麼實現一個迭代器

如何創建一個可迭代的對象

  1. numpy爲什麼這麼快

爲什麼用 Numpy 還是慢, 你用對了嗎?

  1. linux下顯示所有圖片的命令(例如png)

ls *.png
ls | grep *.png

  1. 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
  1. 寫一個實現最小堆的代碼

堆是完全二叉樹,不是平衡二叉樹,記混了。。

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
  1. 介紹最近在做的項目

  2. 什麼是mAP,AP是什麼

目標檢測模型中的性能評估——MAP(Mean Average Precision)

  1. 還有什麼其他的衡量指標?什麼是accuracy?

機器學習常見的幾種評價指標:精確率(Precision)、召回率(Recall)、F值(F-measure)、ROC曲線、AUC、準確率(Accuracy)

收穫
  1. 問題沒聽懂就問面試官,不要急着回答
  2. 很多知識只是知道個表面,但是沒有深入理解,經不起追問
  3. 寫過的東西確實印象是比較深刻的,因爲之前寫過迭代器怎麼用,所以回答的時候比較流暢,看來學習知識還是得有輸出才能保證效果
  4. 代碼想清楚再寫
  5. Python還是太差了,需要系統地看一遍才行,手寫一遍代碼,跑個demo也好,只是瞭解個名字的話是沒有意義的。而且發現面試特別喜歡問高級的語法。
  6. 項目經歷也不是很出彩,多寫代碼,好好努力吧。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章