來源:
@構造函數(秋招offer:百度上海、拼多多)html
7.20筆試;8.8遠程電話面試一小時(30基礎30算法)
@程序猿小哲(春招實習)java
攜程,4月23號北京現場面試, 一輪技術面(一個半小時), 上來面試官先讓給了一張紙,上面有一些題目,讓寫一下。 等了一週,4.30號收到郵件說技術面試已經經過,讓作了一套測評題目,5月6號上午終於收到了offer call@趕忙給我個offer呀(非科班今年秋招,持續跟蹤);秒殺項目美團面試:電腦面試,牛客網的視頻面試功能,由於要手撕代碼python
百度、猿輔導
2.二分法優化到O(lgn)複雜度mysql
3.二維數組的極大值索引(二分法)linux
二維數組的最優時間複雜度是O(n),在二分法的基礎上還有不少能夠優化的地方
求二維數組極大值的O(n)複雜度算法請見博客:
blog.csdn.net/m0_37747541…
4.判斷鏈表有環(頭條)
golang
//用哈希表
import java.util.*;
public class Solution {
public boolean hasCycle(ListNode head) {
Set set = new HashSet<>();
while(head!=null){
if(set.contains(head)){
return true;
}else{
set.add(head);
}
head=head.next;
}
return false;
}
}複製代碼
5.判斷有環鏈表的環的入口(明明知道是劍指offer原題,可是沒想起來TAT)(頭條)面試
//用哈希表
public class Solution {
public ListNode detectCycle(ListNode head) {
Set set=new HashSet<>();
while(head!=null){
if(set.contains(head)){
return head;
}else{
set.add(head);
}
head=head.next;
}
return null;
}
}複製代碼
6.反轉鏈表(頭條)——反轉部分鏈表怎麼作?redis
頭插法
class Solution {
public ListNode reverseList(ListNode head) {
ListNode newList=new ListNode(-1);//建立出來的單節點它的下一個節點是null
while(head!=null){
ListNode next=head.next;
head.next=newList.next;
newList.next=head;
head=next;
}
return newList.next;
}
}複製代碼
7.大量數字如何排序(數字量遠大於內存)算法
8.100萬整數輸出top100spring
9.大整數求和
10.二叉樹求最長路徑(實際上是把二叉樹當作圖,求圖中最長的路徑)
11.阻塞隊列,隊列長度有限,隊列爲空時消費者阻塞,隊列滿時生產者阻塞。要求線程安全
12.兩個鏈表合併(攜程)
13.臺階跳問題(青蛙一次能夠跳一個或者兩個臺階,問有多少種方法,劍指offer原題),比較簡單就不說了(美團實習)
14.買股票的問題,能夠任意次買入賣出最大收益是多少;若是隻能買入賣出一次收益是多少(說思路的時候表述不是太清楚,弄的面試官一直以爲個人思路有問題,後來寫出來代碼才發現是我表述的有問題)
15.最小連續子序列(美團)
16.實現一個字符串全排列 ,可能有重複的,要去重,我直接一個set完事了。。人家說,能不用set嘛。。而後我不會。。人家提示大半天,我也沒想起來。(猿輔導)
17.實現一個collection,提供append 和 pull方法 pull裏返回這裏面的最大值,而且刪除。。我直接一個max()+remove()出來了。。人家說,能不能不用python內置函數,那我說直接遍歷找最大值。。人家說還能不能優化,學過的數據結構有啥能用。 最後提示我用堆,而後我就開始建堆,結果人家說不須要每次都建呀,由於我用的是下浮,我也只寫過下浮。上浮沒寫過,人家最後讓用上浮,吭哧吭哧把上浮寫出來了,最後可能沒時間了,人家說你就說一下思路吧。。貌似最後時間複雜度沒有達到他想要的。。
18.找一個數組中最大的元素,能說出幾種方法(我說直接循環一次不就好了嘛,問我還有沒有別的,我說python直接max,或者排序一下?
19.兩個棧實現一個隊列(問怎麼保證元素是按照你想要的順序放的??我就說難道併發狀況下是加鎖的意思嘛?面試官也沒說啥,就下一個了)
20.字符串逆序,能想到幾種方法,(最後經提示,主要想讓我用棧)
21.給你兩個文件(字符串形式的)如何找出他們之間的不一樣地方?
2.Java中的值傳遞和引用傳遞;java傳遞的是值仍是地址,若是兩個變量引用的是一個複雜的對象,其中一個變量對對象進行修改,會影響到另一個的變量的結果嘛?
3.基本數據類型 和包裝類
4.string 爲何不可變,final能夠修飾什麼
5.建立對象有幾個方法(四種,問我反射和自省的區別,我說我沒據說自省。。。)
1.說一下hashmap(這個題都問爛了,我說到1.7hashmap裏的put操做時候,可能我話太多了,不讓我說了,說這個問題過吧)
2.還問了一致性哈希是什麼,有什麼好處
3.arraylist和linkedlist
1.java中的四種引用以及區別?分別在何時使用?java的四種引用說一下,軟引用和弱引用用在什麼場景(以前看到過,可是忘了是啥應用場景了)(查了一下答案,假若有一個應用須要讀取大量的本地圖片,若是每次讀取圖片都從硬盤讀取,則會嚴重影響性能,可是若是所有加載到內存當中,又有可能形成內存溢出,此時使用軟引用能夠解決這個問題。弱引用能夠用來實現一些規範化映射,如WeakHashMap,當key或者value再也不被引用時能夠自動被回收。)
1.強引用
2.軟引用
3.弱引用
4.虛引用
5.區別
6.使用場景
2.說一下jvm 的各個區域和堆上垃圾回收?(我就講了一下堆分區,minor gc和full gc,那一系列東西,當我講到老年代回收G1的時候,他說不用講這麼細了,就問了一下垃圾回收用的方式(年輕代-複製,老年代cms是標記清除)這個題就過了)感受面試官很着急問,一個問題接着一個問題走
3.類的加載(加載,驗證,鏈接,準備,初始化,我最後準備和初始化那個地方有點記不清了,畢竟好多天沒看了,就說這個地方忘了),而後問了一下實例化和初始化啥區別
4.User user = new User()如何在內存裏存
2.線程池的使用,爲何用,如何加鎖
3.說一下建立線程的幾種方式,4種,runnalbe和thread什麼區別,runnable和callable啥區別,線程池的參數,爲何要有等待隊列嗎,直接建立非核心線程很差嘛?(這個地方我不知道,瞎扯的)
4.建立線程的幾種方式,爲何要用線程池
5.線程的狀態
6.死鎖是啥(我說我昨天剛寫了一個能夠致使死鎖的程序,就把那個程序主要過程說了一下,而後又主動介紹了一下活鎖)
1.說說b樹和b+樹
www.cnblogs.com/George1994/…
3.數據庫索引做用,有哪些,怎麼用
4.寫sql,很久沒寫了,沒答上,太應該了,明明很簡單。。還問了一個表有3個行,另外一個表有四行啥的,兩個錶鏈接最多有多少項,我都不知道啥意思。。。涼了
5.Mysql的隔離級別,幻讀和不可重複讀的區別,怎麼避免的幻讀的,nextkey鎖加在哪裏了
6.索引的原則,何時能夠加索引(我就說常常要查的要加索引,並且得是重複度低的,他問還有什麼狀況嘛?我就不知道了。。。還問我怎麼看重複度,我說mysql有個參數,可是名字給忘了。。。)
7.like %zhang 用到索引了嘛?
8.看我代碼能力題,寫個java bean,有兩張表每個父親表,一個兒子表,而後打印路徑啥的,我都沒明白題,說給我5分鐘想象,要僞代碼。。。放棄了,不會了,沒遇到過這個題。
9.sql方面,給了三個場景,口述該怎麼寫sql,一開始想複雜了,各類left join group by啥的 經提示發現 就是最簡單的where 就好了 (基本沒咋寫過sql,面試官有提示還,勉強答對了)
10.事務的理解,能夠用在什麼地方(我說了acid啥的,而後是怎麼實現的,想往日誌和鎖上引,結果面試官不往那方面走,就問了一下事務能夠幹嗎用。。。我說交易下單扣費啥的)
redis面試問題(一)www.nowcoder.com/discuss/926…
redis面試問題(二)www.nowcoder.com/discuss/926…
1.單例模式有幾種?
有7種。
1.懶漢模式:比較懶,在類加載時不建立實例,所以類加載速度很快,但運行時獲取對象的速度相對較慢
2.餓漢模式:在類加載時就完成了初始化,因此類加載較慢,但獲取對象的速度快。
3.懶漢模式線程不安全
4.懶漢模式線程安全
5.餓漢模式
6.變種的餓漢模式
7.雙重檢查加鎖
8.靜態內部類
9.枚舉類型
2.設計模式的開放封閉原則你是怎麼理解的,有什麼好處?
3.生產者消費者簡單歸納
4.阻塞隊列了解嗎(我說具體那幾個名稱記不清了,不過我說我昨天寫生產着消費者模式的時候用到了阻塞隊列)
5.瞭解的設計模式(我就主動說了雙重校驗的單例,加了volatile,鎖住了類,雙重判斷啥的),別的設計模式由於還沒複習,就說工廠和生產者消費者啥的,怕我說別的只知道名字,他一問具體我答不上來。
計算機網絡基礎知識彙總www.nowcoder.com/discuss/214…
1.用戶態和內核態
內核態:cpu能夠訪問內存的全部數據,包括外圍設備,例如硬盤,網卡,cpu也能夠將本身從一個程序切換到另外一個程序。
用戶態:只能受限的訪問內存,且不容許訪問外圍設備,佔用cpu的能力被剝奪,cpu資源能夠被其餘程序獲取。
爲何要有用戶態和內核態?
因爲須要限制不一樣的程序之間的訪問能力, 防止他們獲取別的程序的內存數據, 或者獲取外圍設備的數據, 併發送到網絡, CPU劃分出兩個權限等級 -- 用戶態和內核態。 www.cnblogs.com/maxigang/p/…
4.Linux系統負載怎麼查看
5.考linux的具體操做 linux查日誌中的某個內容,而且是第幾大,不會。。。
6.linux用過嘛?說說複製和重命名命令?最後我補充了一大堆以前記得命令(ls,grep,top,ps,pstree,tail,cat,more,less,chmod,cd,mv),主要就是爲了看我用沒用過linux。
1.問了一下spring,spring bean有幾種建立方式,生命週期,spring aop和ioc
2.分佈式最終一致性和強一致性
3.cap裏咱們能夠不要p嘛?(這是給我挖坑嘛,都分佈式了,不要p怎麼行,只能在a和c裏選呀)
4.框架方面,如何統計controller層全部方法的調用時間(我不會)
1.微博上,大V發微博點贊迅速上升,該如何統計點贊數量?說出詳細的系統設計
2.設計一個電商企業的架構。說思路。
3.情景題,好比淘寶統計這個頁面有多少訪問量(沒答上)
1.智力題,2我的拿一百個東西,一我的一次能拿1-5個,有沒有必勝的方法?(記得在哪裏看過,可是忘了,沒答上,我只記得要是最後能剩下6個,前面那我的就能贏,而後問我怎麼才能剩下6個呢,我想了一下,放棄了,不會)說一面的就問的這個,你沒答上,此次我再問你一下,看此次會了嘛?我說會了。。(百度)
1.除了java還有沒有其餘熟悉的語言?
主要熟悉的語言是Java,golang語言我知道XXX(提早突擊一下),沒有深刻了解。若是能拿到offer願意轉語言。
2.對簡歷上的項目開始詢問了,由於簡歷上的項目寫的比較多,因此面試官挨個問了一遍項目,大約面試了一個多小時。
3.先自我介紹,而後問了問簡歷上的項目以及項目中碰到的問題及如何解決得,面試的小哥哥一看就特別認真,我說的時候他會關注項目設計的每一塊是否合理。項目中由於說用到了redis數據庫,就問我redis數據庫的優點,爲何選擇redis,是怎麼操做的,redis數據庫支持哪些數據類型。
4.看到我項目裏面寫到了用過線程池,就問我線程池的實現原理,任務隊列的做用,中間有些地方答得不太好,面試官就結合美團的使用場景引導我怎麼實現,學到了不少
5.直接問我項目裏的問題,問我優化了tomcat的參數,問依據的是什麼(???我給忘了,只記得應該優化這個,具體參數忘了)
6.項目裏你有什麼收穫,(我就說,redis和mysql同步的問題,若是隻讓redis庫存減,mysql不減,可是redis不可靠,他說redis咋就不可靠了,沒有持久化機制嘛?我說有呀,可是耗性能呀,因此用mq進行消息同步對吧,而後介紹了一下rocketmq的事務性消息,他問我你知道底層咋實現的嘛 ?很差意思,不知道。。。)
7.先自我介紹,說看你這個專業跟計算機一點關係都沒有呀,爲啥要轉計算機呢,學了多久呀,怎麼學的,而後介紹項目(他說我才學了半年,時間有點短,而且項目沒有實際上線,只是一個小demo)
8.項目裏redis如何保證高併發同時獲得數據問題?(蒙了,redis不是單線程嘛?怎麼會有這個問題?我就不會了)
9.Rokctmq的事務性消息怎麼用的?(主要想問我redis咋回滾,我說mysql能夠回滾,redis不能回滾呀,那他說那你這個不就出問題了嘛庫存不一致。。而後最後我才說,redis的回滾是我本身手動把庫存數據加回去的,原來他一直想問個人這個)
10.令牌桶介紹一下吧
11.看我優化了tomcat的keepalive,問我知道tcp的keepalive嘛,我給達成了http的keepalive,而後人家說是tcp的,問我知道tcp嘛。。我說不知道。。尷尬了
13.介紹項目(慕課網上找的秒殺項目,感受挺low的,大佬勿噴)(第一次介紹項目,很久沒看了,講的有點磕磕絆絆的)項目裏redis用的哪一種數據結構。先後端分離是什麼意思。怎麼防止頁面連續點擊按鈕不停的提交(我說好像沒有考慮這個問題,實際上是我忘了應該)。如何面對高併發。如何防止超賣