去哪兒面試

2021-06-22 17:51:43 字數 2767 閱讀 5924

1.專案和mina

(1)執行緒池機制,為何要用三個執行緒池?

ioacceptor ioprocessor iohandler

連線到建立     io            cpu

乙個selector專門用來響應連線的建立(

op_accept),有多少連線都能接過來?

還有乙個selector專門響應讀(

op_read),ioprocessor是乙個物件池,預設的大小是cpu數+1。

至於為什麼在iofilter上配置執行緒池專門處理iohandler中的業務邏輯,主要考慮iohandler是否會占用cpu太長時間造成io受影響,如果否可以不配置這個執行緒池,執行緒的上下文切換代價也不小(這個理解的不夠深)。

(a)niosocketacceptor類中的

open()方法的部分**

channel

.register(

selector

, selectionkey.

op_accept);

abstractpollingioacceptor類中的processhandles()方法

s session = accept(

processor

, handle);

(b)這個是nioprocessor類

init()方法中的**

session.setselectionkey(ch.register(selector, selectionkey.op_read, session));

(c)abstractpollingprocess中

processor類做

select()

,然後

private

void

process() 

throws

exception

}abstractpollingprocess

類read()方法中

根據預設配置分配iobuffer的大小,後面會動態調整,所以配置這個引數意義不大。

呼叫filterchain.firemessagereceived(buf);將buf放到職責鏈上去做處理

(d)protocolcodecfilter中的

messagereceived()方法,

protocoldecoder 

decoder

=  factory

.getdecoder(session);

這個decoder我們會自己寫。我們在最後

decoderout.write(iobuffer);把解碼資料放入

concurrentlinkedqueue。

decoderout.flush(nextfilter, session);是從乙個

concurrentlinkedqueue

中讀出解碼的結果(iobuffer)然後放到鏈上。

(e)如果配置了

executorfilter,會用新的執行緒池去呼叫。

(f)defaultiofilterchain中的

private

static

class

tailfilter 

extends

iofilteradapter中的

messagereceived()呼叫

session.

gethandler

().messagereceived(s, message);做最後的解析處理。

(2)連線接到了6萬沒有問題,是否能接到10萬甚至更多?為什麼?會有什麼問題嗎?

以pc來說,4核處理器,當io處理不過來時,記憶體會不會持續**?出現大量粘包的情況。

單節點的瓶頸在**????為什麼要用分布式的?

(3)粘包怎麼處理的?

使用了mina的內部機制,有cumulativeprotocoldecoder類,每次判斷session中是否有殘留資料,若有需要把資料拷貝出來,同理處理完後有剩餘也需要儲存。

(4)資料記憶體如何使用的?

中間有哪些記憶體資料的拷貝嗎?

2.arrayblockingqueue  blocking何解? 當讀時,queue為空則condiion.await(),對寫同理。陣列有兩個游標分別指示讀和寫。

synchronized的使用。

3.資料庫索引《高效能mysql》那本書,可惜去年沒有把它研究透

(1)索引資料結構? 

b樹,b+樹

(2)主鍵索引和唯一索引的區別? 

主鍵索引是特殊的唯一索引的一種特例,主鍵索引不可為空?

(3)三列建索引可以通過中間列查詢嗎?不可以的,組合索引的查詢還是先按照第一列去查詢。

不能跳過索引中的列。

如果查詢中有某個列的範圍查詢,則其右邊所有列都無法使用索引優化查詢。

(4)能否用hash做索引

當然可以,而且速度上會更快。缺陷呢?a.資料量很大,會退化?b.做範圍查詢呢?排序之類的呢?

4.合併兩個排序陣列

《劍指offer》那本書裡面的拓展題目,是從後往前拷貝是最優解,但是也要考慮到邊界問題。

第一次面試,前一天還看了球,

面的不好,哎。很多東西只是知道,都沒有深深的想一想為什麼?整體面試題目不難,但是自己的表現真的不好。在國企呆著逐漸覺著學不到東西了,技術也不是國企的主線。好好想想自己的未來吧。

去哪兒面試

昨天筆試,今天面試,一面,二面順利通過。拿到offer。薪資一般,和bat有差異,但不大,基於保密協議,故不透露。筆試有三道題,一道是比較兩個字串的大小寫,忽略大小寫。乙個是根據檔案讀入學生資訊和成績,輸出每個系成績的第一名。還有乙個是關於雜湊的。面試主要是問了一些相關專案的,就寫了乙個 陣列中重複...

去哪兒網筆試 面試

今天參加了去哪兒網春季實習生招聘的筆試,這也是讀研之後的第一次筆試。我做的是開發的題目,總體來講,筆試題目還是比較簡單的。考察的點涉及二分查詢 雜湊表的應用以及一些測試的基礎,具體題目就不提了。主要總結一下筆試之後的感想 總之,對自己讀研之後第一次筆試不滿意,也總結了一些經驗教訓。期待第一次面試,無...

去哪兒網面試 HR面跪了

前幾天去西安郵電筆試,三道程式題。昨天早上去 去哪兒網 面試,一共兩輪技術面,一輪hr面。3個小時內面完。一面 自我介紹。程序通訊方式,sql語句優化,資料庫索引內部原理,兩個演算法題。然後根據專案問了資料探勘和搜尋引擎的知識。面完的時候才知道面試官是無線端搞資料探勘和搜尋引擎的,所以對我的專案比較...