成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

【FAILED】記一次Python后端開(kāi)發(fā)面試的經(jīng)歷

kohoh_ / 999人閱讀

摘要:正確的思路是等概率隨機(jī)只取出共個(gè)數(shù),每個(gè)數(shù)出現(xiàn)的概率也是相等的隨機(jī)輸出把一段代碼改成,并增加單元測(cè)試。代碼本身很簡(jiǎn)單,即使沒(méi)學(xué)過(guò)也能看懂,改后的代碼如下但是對(duì)于單元測(cè)試則僅限于聽(tīng)過(guò)的地步,需要用到,好像也有別的模塊。

在拉勾上投了十幾個(gè)公司,大部分都被標(biāo)記為不合適,有兩個(gè)給了面試機(jī)會(huì),其中一個(gè)自己覺(jué)得肯定不會(huì)去的,也就沒(méi)有去面試,另一個(gè)經(jīng)歷了一輪電話面加一輪現(xiàn)場(chǎng)筆試和面試,在此記錄一下面試的內(nèi)容,做個(gè)小的總結(jié)。


【04/18】電話面試

上來(lái)沒(méi)廢話,直接開(kāi)始問(wèn)問(wèn)題。

1. is==的區(qū)別?

is判斷兩個(gè)引用是否指向的是同一個(gè)變量,即內(nèi)存id是否相等,==則是調(diào)用的__eq__方法,一般是用于判斷值是否相等,也可以重寫(xiě)__eq__方法實(shí)現(xiàn)想要的效果。


2. dictlist的查找復(fù)雜度?

dicthash實(shí)現(xiàn),查找的時(shí)間復(fù)雜度是O(1),list則為O(n)


3. a/b/c三個(gè)裝飾器依次裝飾函數(shù)fun(),裝飾器的執(zhí)行順序?

注意裝飾器函數(shù)本身一般有兩層,在裝飾的時(shí)候外層和內(nèi)層順序是相反的,詳情可以參考這邊文章python 多個(gè)裝飾器的調(diào)用順序。


4. 如何運(yùn)行一個(gè)字符串?

evalexec。


5.Python多線程能否充分利用CPU多核心,為什么?

這里回答的是GIL相關(guān)的東西,可深可淺,自己把握~


6. 什么是上下文管理器?如何實(shí)現(xiàn)?

廣泛意義上來(lái)說(shuō),上下文是指程序運(yùn)行的環(huán)境,Python中常見(jiàn)于打開(kāi)文件或網(wǎng)絡(luò)連接,其實(shí)就是with關(guān)鍵字,如:

with open("test.txt") as file:
     print(file.read())

可以確保文件在最后會(huì)被關(guān)閉,只要對(duì)一個(gè)對(duì)象實(shí)現(xiàn)了__enter____exit__函數(shù),就可以構(gòu)造自己的上下文管理器了。


7. 同步/異步/阻塞/非阻塞都是什么?

感覺(jué)直接解釋概念不好解釋?zhuān)@里我回答的思路是舉例子,異步說(shuō)白了就是任務(wù)不需要同步進(jìn)行,比如用爬蟲(chóng)爬取一個(gè)數(shù)據(jù),然后再保存數(shù)據(jù),接下來(lái)再去爬另一個(gè)數(shù)據(jù),這是同步;異步就是爬蟲(chóng)不用等著數(shù)據(jù)保存好,爬完一個(gè)直接去爬另一個(gè),數(shù)據(jù)保存的事情交給別的邏輯去慢慢處理;阻塞和非阻塞也是基于此的,同步的情況下會(huì)阻塞爬蟲(chóng),爬蟲(chóng)需要等待數(shù)據(jù)的保存。(這部分是我自己的理解,建議看看專(zhuān)業(yè)的說(shuō)明)


8. 如何判斷兩個(gè)浮點(diǎn)數(shù)是否相等?

之前完全沒(méi)想過(guò)這個(gè)的問(wèn)題,我的回答就是按一個(gè)差不多的精度去比較,比如到小數(shù)點(diǎn)第幾位之前都是相等的,就認(rèn)為兩個(gè)數(shù)相等,或者Math模塊里可能有什么方法可以去精確對(duì)比,當(dāng)時(shí)是這么回答的,現(xiàn)在查了一下基本也是這個(gè)思路,Math模塊中有一個(gè)isclose函數(shù)用來(lái)判斷兩個(gè)浮點(diǎn)數(shù)的值是否接近或相等


9. MySQL的索引一般是怎么實(shí)現(xiàn)的?

B-Tree(一般是B+Tree)和Hash,然后再簡(jiǎn)單介紹一下。


10. 對(duì)于Flask的實(shí)現(xiàn)有了解嗎?

只知道WSGI,其余的不清楚,暫時(shí)還沒(méi)去深入看Flask的源碼。



【04/20】現(xiàn)場(chǎng)筆試+面試

跨了大半個(gè)北京城,還跟leader撒謊請(qǐng)假,也是心累。筆試題如下:

1. 一個(gè)木棍任意截成三段,圍成三角形的概率?

咩咩咩?不知道。(回來(lái)查了是25%,具體可以自行搜索,反正脫離數(shù)學(xué)N年是無(wú)論如何都想不出來(lái)的)。


2. 一個(gè)函數(shù)RAND7()隨機(jī)返回1~7,使用它構(gòu)造一個(gè)RAND10()函數(shù)隨機(jī)返回10

一開(kāi)始寫(xiě)了個(gè)函數(shù)如下:

def rand10():
    a = rand7()
    b = rand7() - 4
    if b < 0:
        b = 0
    return a + b

也是腦袋抽了,想得太簡(jiǎn)單,這個(gè)rand10雖然能返回1~10的隨機(jī)數(shù),但每個(gè)數(shù)出現(xiàn)的概率不是1/10,后面時(shí)間快到了檢查的時(shí)候才反應(yīng)過(guò)來(lái)。正確的思路是:

def rand10():
    while 1:
        res = (rand7()-1)*7+rand7()    # res等概率隨機(jī)1~49
        if res < 40:                   # 只取出0~39共40個(gè)數(shù),每個(gè)數(shù)出現(xiàn)的概率也是相等的
            return res % 10 + 1        # 隨機(jī)輸出1~10

3. 把一段JAVA代碼改成Python,并增加單元測(cè)試。

JAVA代碼本身很簡(jiǎn)單,即使沒(méi)學(xué)過(guò)也能看懂,改后的Python代碼如下:

class MyClass:
    __current = 0
    def next(self):
        MyClass.__current += 1
        return MyClass.__current

但是對(duì)于單元測(cè)試則僅限于聽(tīng)過(guò)的地步,需要用到unittest,好像也有別的模塊。


4. 給定一個(gè)數(shù)組,按奇數(shù)在前升序,偶數(shù)在后降序排列,一行代碼實(shí)現(xiàn)。

沒(méi)啥好說(shuō)的,一行代碼必然是列表生成式,假設(shè)數(shù)組是nums,代碼如下:

sorted([n for n in nums if n % 2]) + sorted([n for n in nums if not n % 2], reverse=True)

5. 實(shí)現(xiàn)單例。

單例就是說(shuō)一個(gè)class只能有一個(gè)instance,實(shí)現(xiàn)的方法有很多,例如改寫(xiě)__new__方法:

class Singleton(object):
    _instance = None
    def __new__(cls, *args, **kw):
        if not cls._instance:
            cls._instance = super(Singleton, cls).__new__(cls, *args, **kw)  
        return cls._instance 

6. 有一個(gè)問(wèn)答平臺(tái),每個(gè)用戶對(duì)一個(gè)問(wèn)題最多只能回答一次,同一個(gè)問(wèn)題最多只能對(duì)一個(gè)答案點(diǎn)贊;1)設(shè)計(jì)合適的數(shù)據(jù)庫(kù)結(jié)構(gòu);2)寫(xiě)出SQL獲取點(diǎn)贊數(shù)最多的10個(gè)問(wèn)題;

我平時(shí)也就用數(shù)據(jù)庫(kù)查數(shù)據(jù),在設(shè)計(jì)數(shù)據(jù)庫(kù)上沒(méi)有深入研究,因此的我答案就簡(jiǎn)單寫(xiě)了有哪些表,字段分別是什么,至于題中的條件限制,就交由后臺(tái)的程序邏輯去處理,而不是在數(shù)據(jù)庫(kù)設(shè)計(jì)層面去限制。因?yàn)槭亲约涸O(shè)計(jì)的表結(jié)構(gòu),SQL本身也就不難。


7. 設(shè)計(jì)一個(gè)棧,實(shí)現(xiàn)pop/pushmax方法,要求能在O(1)時(shí)間內(nèi)取得最大值。

LeetCode原題?。?b>list怎么能O(1)取得最大值呢,無(wú)非是空間換時(shí)間,每push一個(gè)數(shù)就同時(shí)記錄當(dāng)前的最大值。


8. 手寫(xiě)快排。

呵呵。


其他針對(duì)簡(jiǎn)歷的提問(wèn)
1. 你的網(wǎng)站,你覺(jué)得如果訪問(wèn)量上去了,最先出現(xiàn)瓶頸問(wèn)題的點(diǎn)是哪?怎么優(yōu)化?

我答的是數(shù)據(jù)庫(kù),因?yàn)楹枚嗖槐匾蛘呖梢允褂镁彺娴牡胤揭差l繁操作數(shù)據(jù)庫(kù),而且是使用的ORM,但之前從哪看到ORM不能確保對(duì)應(yīng)的SQL語(yǔ)句是最優(yōu)的,因此可以嘗試使用原生SQL或者增加Redis緩存。


2. 如果要擴(kuò)展后臺(tái)服務(wù)器,需要怎么做?

(話說(shuō)這不是運(yùn)維的工作么。。。)呃,就是增加服務(wù)器啊,然后前面加一層負(fù)載均衡,把請(qǐng)求分配給不同的服務(wù)器。(那不同的服務(wù)器怎么使用你的Session?)再加個(gè)Session服務(wù)器。


3. 我看你平時(shí)刷編程題,有遇到什么有意思的題目嗎?

LeetCode才開(kāi)始刷,就舉了兩道Codewars上的題目,我也真是傻了,真的舉了兩道有意思(但自己沒(méi)做好)的題。


其他就無(wú)非是一些為什么想做后端開(kāi)發(fā)之類(lèi)的問(wèn)題了,個(gè)人感覺(jué)題目大部分也挺簡(jiǎn)單的,我的表現(xiàn)也算中規(guī)中矩吧,但面試官說(shuō)我要進(jìn)一步加強(qiáng)基礎(chǔ)知識(shí),具體哪方面(數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)協(xié)議、還是Python本身)又語(yǔ)焉不詳。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/41573.html

相關(guān)文章

  • 一次慘烈阿里面試經(jīng)歷

    摘要:當(dāng)我們的需求出現(xiàn)變動(dòng)時(shí),工廠模式會(huì)需要進(jìn)行相應(yīng)的變化??偨Y(jié)來(lái)說(shuō),要想成功進(jìn)行一次阿里巴巴的面試,你需要了解甚至掌握以下內(nèi)容語(yǔ)言,尤其是線程原理數(shù)據(jù)庫(kù)事務(wù),加鎖,重點(diǎn)分布式設(shè)計(jì)模式可以說(shuō)是涉及范圍非常廣了。 showImg(https://segmentfault.com/img/bV8cSY?w=576&h=432); 前言 今天本是一個(gè)陽(yáng)光明媚,鳥(niǎo)語(yǔ)花香的日子。于是我決定在逛街中感受...

    Eastboat 評(píng)論0 收藏0
  • 2017年3月份前端資源分享

    平日學(xué)習(xí)接觸過(guò)的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 03月份前端資源分享 1. Javascript 175453545 Redux compose and middleware 源碼分析 深入 Promise(二)——進(jìn)擊的 Promise Effective JavaScript leeheys blog -...

    ermaoL 評(píng)論0 收藏0
  • 2017年3月份前端資源分享

    平日學(xué)習(xí)接觸過(guò)的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 03月份前端資源分享 1. Javascript 175453545 Redux compose and middleware 源碼分析 深入 Promise(二)——進(jìn)擊的 Promise Effective JavaScript leeheys blog -...

    kamushin233 評(píng)論0 收藏0
  • 2017年3月份前端資源分享

    平日學(xué)習(xí)接觸過(guò)的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個(gè)網(wǎng)址:http://www.kancloud.cn/jsfron... 03月份前端資源分享 1. Javascript 175453545 Redux compose and middleware 源碼分析 深入 Promise(二)——進(jìn)擊的 Promise Effective JavaScript leeheys blog -...

    yy736044583 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<