為什麼取得是這樣的乙個題目,這個其實不難理解,作為bat中的一員,tx的面試題往往會成為一段時間之內的某些領域的風向標。這些面試題可能並不難,但是涵蓋了很多方面的知識,需要我們謹慎應對。
lazyman("mulige")
// hi! this is mulige!
lazyman("mulige").sleep(10).eat('dinner')
// hi! this is mulige!
// 等待10秒...
// wake up after 10
// eat dinner
lazyman("mulige").eat("dinner").eat("supper")
// hi! this is mulige!
// eat dinner
// eat supper
lazyman("mulige").sleepfirst(10).eat("supper")
// 等待10秒...
// wake up after 10
// hi! this is mulige!
// eat supper
從上面的題目開始分析,按照上述的所要的輸出結果:
按照上面的點我們繼續分析一下:
經過上面的分析,接下來我們可以編寫我們的**:
class lazymangenerator !`)
//繼續執行任務
this.next()
}//將初始任務放入到任務佇列中
this.taskarray.push(task);
//這裡是為了保證任務佇列的正確執行,保證主線程任務也就是呼叫鏈執行完成之後開始執行任務佇列的任務
settimeout(() => ,0)
}next()
eat(name) `)
this.next();
}this.taskarray.push(task)
//顯式的返回this,保證呼叫
return this
}sleeptask(num, isfirst) 秒...`)
settimeout(() => `)
this.next()
}, num * 1000)
}//判斷是不是需要優先執行的任務,根據不同情況插入任務佇列
isfirst ? this.taskarray.unshift(task):this.taskarray.push(task)
}sleep(num)
sleepfirst(num)
}function lazyman(name)
我們簡單分析一下上面的這個實現:
其實上面的**實現如果我們「穩住不慌」的情況還是能夠一點一點完成實現的,但是往往我們再一看到這個問題的時候,就已經蒙了,所以根本無法實現上面的問題。
接下來是我們在這道面試題中的收穫,也是我認為最重要的東西,同時也是這個題目的考察點:
說一下我自己的感受,很多的工程師對面試題的理解是:「當我需要換工作的時候,才去看面試題」。但是我認為,這種思維或者說是理解是錯誤的,很多的面試題,我們去看的時候,往往能夠填補我們某一些方面的知識的空缺,將我們的所學串聯起來,形成一種系統的程式設計邏輯思維,當然,這也對我們了解行業的現狀有很大的幫助。還有,實際上,這也是說明我們在時刻準備著!
從一道php面試題說起
面試題目 setcookie name test echo cookies name 請說出程式結果 能說出第一次與第二次的區別者加分 本來一開始我認為不就是設定乙個cookie,然後讀出來的問題,但是被那個後面的提示搞迷惑了從來沒有想過這樣的問題。面試的時候也沒有想出答案,後來在面試官的指點下搞清...
從一道面試題開始說fork
自 http blog.csdn.net yuwenliang archive 2010 01 18 5209239.aspx 給出如下c程式,在linux下使用gcc編譯 1 include stdio.h 2 include sys types.h 3 include unistd.h 4 5 ...
一道面試題
一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...