七夕前面試被虐總結


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

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

面試官兩人,一年輕(以下"輕官"代替),一年長(以下“長官”代替)。年長的穿了件大外套+北京布鞋,很有個性。

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

提問順序記不太清了,出門時候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(鋼琴鍵盤),問如何實現,如何判斷確認點擊按鍵,如何繪制,優化。主要關心項目中對面向對象的理解,類如何設計提問。

  然后,詢問項目中用到哪些算法,如何設計,算法復雜度。

  例如確認某個點擊事件是按在哪個按鍵,需要去遍歷全部按鍵,算法復雜度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 -北京 -鳥窩附近

      

                                                            

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM