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語句優化,資料庫索引內部原理,兩個演算法題。然後根據專案問了資料探勘和搜尋引擎的知識。面完的時候才知道面試官是無線端搞資料探勘和搜尋引擎的,所以對我的專案比較...