东信北邮 智能终端开发工程师
笔试部分
首先去做了一套笔试题,前面选择题都是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(); } } }
复制代码
总结
自己对于网络相关的知识不是很了解,算法也不了解,一次完全失败的面试。