東信北郵 智能終端開發工程師
筆試部分
首先去做了一套筆試題,前面選擇題都是android基礎,后面是sql語句。
有一個問題說的是runtime exception,有四個選項:
a. ArithmeticException
b. lllegalArgumentException
c. NullPointerException
d. BufferUnderFlowException.
其中a是算數異常,b是傳遞非法參數異常,c是空指針,d是緩沖區下溢異常,都是運行時異常。具體看:最常見的rutime exception
然后是sql語句的實現:
視頻面試
面試官人在北京,所以采用的視頻面試。問的問題主要有:
-
談談網絡分層結構
-
看你簡歷上寫熟悉socket,怎么建立一個socket連接
-
你這個項目里主要用到的技術
-
給你兩個int數,不給多余的空間,怎么交換這兩個的值
-
斐波那契額函數怎么用代碼實現
一. 網絡分層結構:
-
應用層:主要用于文件傳輸,電子郵件,文件服務,虛擬終端。對應的tcp/ip協議為:TFTP,HTTP,SNMP,FTP,SMTP,DNS,TELENT
-
表示層:主要用于數據格式化,代碼轉換,數據加密
-
會話層:解除或建立與其他節點的聯系
-
傳輸層:提供端對端的接口 tcp,udp協議
-
網絡層:為數據包選擇路由 tcp/ip協議為:IP,ICMP,RIP,OSPF,BGP,IGMP
-
數據鏈路層:傳輸有地址的幀,錯誤檢測功能 tcp/ip協議為:SLIP,CSLIP,ARP,RARP,MTU
-
物理層:以二進制數據形式在物理媒體上傳輸數據 tcp/ip協議為:ISO2110
二. 建立socket連接
- 首先調用Socket類的構造函數,以服務器的指定的IP地址或指定的主機名和指定的端口號為參數,創建一個Socket流,在創建Socket流的過程中包含了向服務器請求建立通訊連接的過程實現。
- 建立了客戶端通訊Socket后。就可以使用Socket的方法getInputStream()和getOutputStream()來創建輸入/輸出流。這樣,使用Socket類后,網絡輸入輸出也轉化為使用流對象的過程。
- 使用輸入輸出流對象的相應方法讀寫字節流數據,因為流連接著通訊所用的Socket,Socket又是和服務器端建立連接的一個端點,因此數據將通過連接從服務器得到或發向服務器。這時我們就可以對字節流數據按客戶端和服務器之間的協議進行處理,完成雙方的通訊任務。
- 待通訊任務完畢后,我們用流對象的close()方法來關閉用于網絡通訊的輸入輸出流,在用Socket對象的close()方法來關閉Socket。
三. 項目中用到的技術
- fresco
- retrofit
- 熱更新
- 如何避免內存泄漏
四. 交換數值
這個問題其實比較簡單,當時沒有回答上來。。尷尬得一批:int a ,b;a=a+b;b=a-b;a=a-b;
復制代碼
五. 斐波那契函數
? 思路是使用遞歸調用
public class Demo4 { // 使用遞歸方法 private static int getFibo(int i) { if (i == 1 || i == 2) return 1; else return getFibo(i - 1) + getFibo(i - 2); } public static void main(String[] args) { System.out.println("斐波那契數列的前20項為:"); for (int j = 1; j <= 20; j++) { System.out.print(getFibo(j) + "\t"); if (j % 5 == 0) System.out.println(); } } }
復制代碼
?
總結
自己對于網絡相關的知識不是很了解,算法也不了解,一次完全失敗的面試。