七夕前面試被虐總結

面試是朋友推薦過去,事前已經發過簡歷,一週後通知我去面試,早上9:30準時到,地點在中關村教堂後面。java

公司門廳有保安小哥,打電話來領人,進門就在大廳開始。android

面試官兩人,一年輕(如下"輕官"代替),一年長(如下「長官」代替)。年長的穿了件大外套+北京布鞋,頗有個性。c++

無筆試,直接技術面,開始大部分是「」長官提問,後來「輕官」問了一些。面試

提問順序記不太清了,出門時候10:40左右,期間一直沒停,能想起來的提問以下:算法

面試問題 總結
	1.寫一個函數,把int轉換成byte[];
		1.1 java中數據存儲區域有哪些;
		1.2 String str1 = "abc" 
			String str2 = "abc"
			str1 == str2嗎
			爲何?;
	2.模擬一個ArrayList ,寫一個add(Object obj ) 函數 ;
		2.1 說說時間和複雜度
		2.2 數據變多後如何處理越界
	3.Activity 四種啓動模式,分別說說意思和區別	;
		3.1 什麼狀況下使用四種模式,爲何?
	4.數的理解,二叉樹如何平衡;
		4.1 若是插入的數據相似9,8,7,6....1 如何保證左右平衡
	5.Handler,Thread , Looper , Message 關係
		5.1 Handler 是任何地方均可以建立的嗎?
		5.2 每一個線程是否都有Looper ,
		5.3 可否在一個Handler 中 new Thread ().start();
	6. 假若有一個List ,裏面有十個數 0-9 ,
		6.1 若是循環遍歷中若是 i%2 == 0 執行remove ,是否能夠順利執行
			for (int i = 0; i < array.size(); i++) {
				if (i%2 == 0) {
					array.remove(i);
				}
			}
		6.2 若是能夠順利執行,執行完畢,list剩餘的數位哪幾個;
	7.看簡歷項目
		7.1 說說簡歷框架如何實現
		7.2 哪個頁面是你寫的,頁面的佈局是如何設計,具體到某個控件使用的是什麼view;
		7.3 某個view 如何保持劇中,
			LinearLayout ,RelativeLayout 中view 如何居中,對齊,
		7.4 某個頁面相似 android 桌面,排列着N個 按鈕,如何動態計算顯示按鈕
			例如:
				需求:N <= 20  ,每行顯示 5個 ;N>=20 每行顯示 6 個
				每行顯示控制如何實現
				
		7.5 簡歷項目中涉及到自定義View ,如何實現。
		7.6 自定義view 如何控制刷新,如何優化,遇到哪些問題,如何解決,刷新區域如何指定。
		7.7 View 原理,(須要看view源碼) 看源碼 理解源碼很重要 ;
		7.8 簡歷中項目的框架搭建設計思想,相似mvc設計,view 顯示層/控制層/
		
	8.簡歷有寫,熟悉Android UI框架,請你說說 你理解的UI框架;
	9.簡歷有寫 熟悉經常使用設計模式 ,請你說說 你經常使用的設計模式,而且在項目中用獲得的有哪些。
		9.1 簡歷中的項目,用到了你說的設計模式有哪些,哪些地方用到,爲何這麼用,這麼用有什麼好處?
		
		9.2用的單例,觀察者,工廠 。
			觀察者 模式中,說說誰是觀察者,誰是被觀察者 ,之間的關係
	10.C,/C++ 掌握程度(0)
	11.TCP ,UDP 區別,項目中哪些地方使用過?
  	11.1 如何保證UDP狀況下數據包不丟包/完整性(非心跳鏈接,例如發送10個包,中間3個發送時候UDP 未鏈接,如何識別/保證)
		(2014-08-05 10:19 補充)
					

   

  面試官出來時候自帶簡歷,坐下後開始看,我主動自我介紹。設計模式

  介紹簡單,姓名,籍貫後開始從第一家公司 和第一個項目提及,前公司業務方向,我負責的內容。。數組

  「長官」從第一個項目開始,我負責自定義View(鋼琴鍵盤),問如何實現,如何判斷確認點擊按鍵,如何繪製,優化。主要關心項目中對面向對象的理解,類如何設計提問。數據結構

  而後,詢問項目中用到哪些算法,如何設計,算法複雜度。mvc

  例如確認某個點擊事件是按在哪一個按鍵,須要去遍歷所有按鍵,算法複雜度f(n);框架

  詢問項目中用到哪些設計模式。

  接下來問最近的項目,我作了項目的介紹,而後演示。介於項目框架我是負責,「長官」問了框架如何搭建,優點,有那些優化,佈局如何設計等很詳細的問題。

  例如:整個框架是Activity + Fragment 某個Fragment 中存在ViewPager  ,ViewPager中包含了多個Fragmeng ,「長官」聽了只是笑笑,我沒太明白小哪裏,是這樣不太好,若有看官知道,望指教。

  問項目中隨時問Activity相關,Handler Thread 相關。

  看得出「長官」技術很好,還問了一些基礎,

  例如讓我寫一段函數,將int 轉換成byte[] ,當時我想的是:

  new Integer(x).getBytes();

  「長官」看了,我感到了被鄙視的眼神。。。說:「我沒見過這樣寫的」;

  我補充了一句,是不是想讓我用位移運算,「長官」沒說什麼。

  回來後查詢了下確實沒有 new Integer(x).getBytes(); 這個API ,

  2014-08-05 10:07 補充:能夠參考:http://my.oschina.net/u/169390/blog/97495

  「輕官」後來問了幾個關於數據結構的,

  例如,如何設計一個鏈表結構,能夠簡單畫一下。

  答:我在紙上簡單話了 節點 的結構 ,包含了「data」 和 「index」 內容,能夠擴展 指向先後 鏈表 「data」 「left_index」 「 right_index」 等

  再問:若是鏈表中出現了一個 節點,他的「left_index」 指向了一個錯誤的 節點,如何找出來,

  答:我想到將鏈表遍歷 將「left_index」 存在數組,若是出現重複,能找到,這樣是最笨的方式,算法複雜度f(n) ;

  。。。。

  最後兩人回去,讓我等一會,幾分鐘後「輕官」回來 委婉的表示 他們須要高級技術人員(2-2 以上),我只能達到(2-1) ;

  表示有些問題例如算法和結構,項目中或許歷來不會用到,但拿來面試仍是很管用,若是想來,能夠準備好再來面試。

  表示感謝後下樓,外面下雨了。。

  此次面試相比以前遇到過的頗有難度,在此對面試官表示感謝。

  補充:關於面試問題答案,有時間會補充進來,沒有補充的話,自行google吧


  羅嗦一大堆,感受本身技術仍是太菜,項目中用到的會去了解,用不到的,就瞭解的少或者理解不夠。

  1.Java博大精深,簡歷上寫「精通java」 ,實際上不少基礎理解不夠,須要學習的還不少。

  2.Android 只是知道表面,API 都沒所有看過,原理更不清楚,須要加深理解。

  3.數據結構和算法,一般用不到,當時須要瞭解基本的算法實現原理,和基本的機構,(面試前把「大話數據結構」 看了一遍,沒吸取全);

  4.設計模式也須要知道,瞭解不是目的,真正用到項目中才是掌握。

  5.額,學歷也是附加項。

  接下來要作的

  1.Java基礎 有時間複習下;

  2.Android 須要瞭解框架,真是瞭解,看源碼,瞭解設計思想,不僅僅是調用API

    (這方面源碼已經下載,還罩着教程編譯成功,惋惜編譯經過不表明就瞭解了)  

  3.數據結構和算法,繼續看書,課後習題要本身實現,不能看似簡單就不動手

    (大話數據結構 代碼是c++ ,順帶也要學習c++了)

  4.C++ ,跑不了要學,只作應用層沒前圖,Framework是下一個目標;

  5.設計模式,須要看一下。

  6.還有英語。。。。

  7.學歷。。。。。

雖然總結接下來須要作的事情,但願能堅持一條條作到,不少時候都是三分鐘熱度,例如減肥/健身。。。。

不進步的話,就沒毛爺爺娶媳婦。

                                                                           --------------------2014-08-04 -北京 -鳥窩附近

相關文章
相關標籤/搜索