1. 程式人生 > 其它 >如何寫出高效率的SQL

如何寫出高效率的SQL

如何寫出高效率的SQL

螞蟻金服一面:分散式架構 50分鐘

  1. 個人介紹加專案介紹20分鐘
  2. 微服務架構是什麼,它的優缺點?
  3. ACID CAP BASE理論
  4. 分散式一致性協議,二段、三段、TCC,優缺點
  5. RPC過程
  6. 服務註冊中心宕機了怎麼辦?
  7. 微服務還有其他什麼元件
  8. 分散式架構與微服務的關係
  9. 你有什麼問題要問我的。

螞蟻金服二面:1個小時

上來不用自我介紹,專案介紹,直接開始

演算法來兩道

  1. 各種排序演算法、未排序常規資料查詢第K大的數,時間複雜度。
  2. 二叉樹的深度

作業系統來兩道

  1. 虛擬記憶體分頁瞭解不?
  2. 程序和執行緒區別?

資料庫來三道

  1. 第一二三正規化是什麼?
  2. 一個表一千個列值為true和false,寫sql 查詢 有300個列值為true的行。
  3. 髒讀和幻讀是什麼?

JVM

  1. 什麼物件會從新生代晉升到老年代

多執行緒

  1. 一個任務分成十個任務,最後彙總計算,不能用fork/join
  2. 開源框架原始碼瞭解不?
  3. 資料建模兩道、個人題開放性題

安全方面的問題

  1. 對安全方面瞭解多少?
  2. 安全協議有哪些 、https是啥?

介紹你做的專案和其中的難點。

三面

個人感覺著重技術深度。

  1. 從ConcurrentHashMap一路問到鎖&鎖優化->LongAdder->偽共享->快取行填充->cas等諸多技術細節;
  2. 從hystrix一路問到原理->自己如何實現->如何優化->響應流程式設計(reactive streams);
  3. 從簡單的生產者消費者模式設計到如何高效健壯實現等等。

四面

  1. 如何倒序輸出單向連結串列?
  2. 個人直接想法是用棧先進後出的特點,把連結串列資料讀到棧裡然後輸出。
  3. 有更好的實現方式嗎?
  4. 主要問專案情況,然後根據一個專案,問如果量級擴大1000倍,你會怎麼做?有哪些優化措施?高效能&高可用措施?

五面:HR面

給大家丟擲幾大深坑問題:

  1. 個人的職業規劃是什麼
  2. 你遇到的最大問題或者是困難是什麼
  3. 你如何看待阿里
  4. 你能為阿里帶來什麼
  5. 你的優缺點是什麼

這幾個問題,大家深思啊,不多說。

面試總結:

  1. 技術基礎必須紮實:演算法、資料結構、作業系統等,螞蟻金服面試對技術的基礎非常重視,基礎紮實的同學有利於在前兩輪突出重圍。
  2. 技術寬度:主要集中在高併發、多執行緒、分散式架構,大以及常用中介軟體(快取等)的選型和比較。
  3. 技術原理深入:重點還是提前準備好JVM、多執行緒高併發這塊。
  4. 參與的專案總結:你需要清楚你所做專案的關鍵細節、優化、特點、原理。
  5. 很多所用第三方庫&中介軟體等的原理,即使你不知道,也要有自己的想法能夠說出如何代替實現,比如單點登入的替代方案。
  6. 最好,提前準備一個大資料訪問,比如pv擴大1000倍,你的架構或者技術方案應對措施。
  7. 最後,千萬不要倒在HR面試環節,避重就輕是重點,特別是優點和缺點,如果問到你的規劃是什麼,請記得一定告訴HR你想成為一名優秀的技術專家!

以上就是我的總結,這些都是不斷面試積累來的經驗,分享出來避免更多同學少走彎路,早日進入BAT等一線網際網路公司!

總結

無論是哪家公司,都很重視高併發高可用的技術,重視基礎,重視JVM。面試是一個雙向選擇的過程,不要抱著畏懼的心態去面試,不利於自己的發揮。同時看中的應該不止薪資,還要看你是不是真的喜歡這家公司,是不是能真的得到鍛鍊。其實我寫了這麼多,只是我自己的總結,並不一定適用於所有人,相信經過一些面試,大家都會有這些感觸。

最後,如果有想要我整理的面試資料的,可以戳這裡免費領取,我整理了一些面試真題資料,技術知識點剖析教程,還有和廣大同仁一起交流學習共同進步,還有一些職業經驗的分享。