【富途牛牛】Android 面试

       富途牛牛一般来说有四轮面试,前三轮是技术面试,最后一轮是HR面试。如果是Android岗位,第一轮是android相关技术面试,主要考察简历上有的和Android 技术相关的问题,第二轮是java基础知识面试和算法;第三轮可能是综合技术面试。说来惭愧,第一轮面试回答的超好,面试官也非常满意,所以才主动分享了公司的后面几轮面试的偏向、公司的业务,组内的业务方向等,也说了想招我,谁知道二面就跪了。所以面试经验止步于二面。所以一面的面试参考答案值得参考的程度更大一些,二面磕磕巴巴,也有些问题紧张之下都答错了。二面的答案还请自行总结,参考性不大。

一面

1 线程安全

2 如何保证线程安全

1 2 答:线程安全问题,主要是因为针对同一个变量,在不同的地方进行修改,就可能造成结果不对或抛出异常的情况。广义的说,只要一个变量被两个及以上的地方使用或修改,就可能存在线程安全问题,狭义的线程安全就是两个线程操作同一个变量造成的线程安全问题。并发的修改或读写可能会造成结果不对,可能会抛出异常,可能会导致死锁等问题。保证线程安全主要有以下几个方面:1 是使用线程安全的数据结构,在写代码的一开始,如果存在并发修改的情况,就应该使用线程安全的数据结构,如hashmap是非线程安全的,cocurrentHashMap就是线程安全的;2是使用线程安全的控制关键字,如必要的同步关键字和加锁等;3是使用线程安全的设计模式,主要是单例模式,如果有并发的需要,就应该使用线程安全的单例模式,而不是最简单的懒加载的非线程安全的单例模式,会造成一系列的线程安全问题。

3 MVC MVP和MVVM的特点

4 死锁是什么,写一个死锁

死锁就是两个线程都持有对方线程需要的资源,但想在自身并不释放的情况下申请到对方持有的i资源,最后以锁互持的情形,发生死锁,两个线程都无法执行的情况。

写一个死锁。

(此处有网络搜索链接)

5 从网页写入一个网址https://baidu.com到返回结果,中间发生了什么

(复习计算机网络知识,部分描述不是非常精准)

当写入网址并点击enter之后,首先,http协议是应用层协议,所以要将访问的信息进行封装打包,并在包前后加上端口号相关信息等,然后进入路由协议的下一层,在TCP\IP协议层,再将上一层的数据进行打包,前后加上ip地址,主机地址和目标ip地址等信息,继续往下一层传播,经过数据链路层和物理层,最终以电信号的方式传播,同时网络中有很多交换机和路由器,信号通过路由器最终找到访问目标,此时从物理层--数据链路层--传输层--网络层--应用层再层层拆包,最终在目标服务器的顶层获得用户访问的信息,将需要回传的信息准备好之后,就再经过层层打包,层层拆包,最后用户电脑中会呈现出对应的网页界面。

这其中https是加密传输,加密传输的话使用xxx加密先传输密钥,再使用xxx传输来传送数据,通过解密获得最终信息。

6 一根不均匀绳子烧完需要一个小时,现在有若干这样的绳子,准确计时得到45min

燃烧两根绳子,同时点燃绳子1 和绳子2,绳子1点燃两头,绳子2点燃一头,当绳子1燃尽时(过去了半个小时,此时绳子2的剩余长度也是半个小时的燃尽时间),点燃绳子2的另一端,当绳子2燃尽时,从同时点燃两根绳子开始,到绳子2燃尽为止,中间的时间就是45分钟。

7 一副扑克牌,任抽三张(不考虑花色),属于顺子(123,234,789就是顺子)的概率是多少

一副扑克有54张,去除两张王不能组成顺子,剩下的4*13里可以抽到顺子,顺子的组合形式有11种(123,234,345,……,JQK),

抽到任何一种顺子都算,那么顺子的选择有11种,每一个顺子不要求同个花色,则每个顺子每一个数字都有四种花色选择,所以分子是:11*(4*4*4),分母是54取3,为(54*53*52)/(3*2*1)

最后的结果是:11*4*4*4*3*2/(54*53*52)

8 问题2中提到了单例模式,其中线程安全的使用类加载来保证安全的静态变量的单例模式有什么缺点吗?

类加载的方式不是懒加载,可能会导致不必要的内存浪费,如果最终单例模式没有被使用到,其实就是浪费了内存。因为类加载虽然理论上是通过getInstance来加载的,但是实际上并不能保证在其他时机会被加载。


二面

1 int 占用多少个字节

2、string "abcde"占用多少个字节

3、TCP和UDP的区别

一个是可靠传输,连接之前和断开之前要经过握手和分手确认,如果有丢包的情况会重传,一个是面向无连接的不可靠传输,允许丢包情况的存在。

4、HTTP是在哪一层的协议?https中的数据传输是非对称加密还是对称加密?

应用层。?

5、进程和线程的区别?以及进程和线程与堆和栈之间的关系?

6、什么是死锁?如何避免死锁?

面试一中。

7、两个线程,均针对同一个全局变量循环十次加1,在单核CPU中执行,最后的执行结果是什么

不确定。

8、快速排序的核心思想是什么

分治+递归

9、有一个二叉搜索树,写出其插入方法,二叉搜索树中没有重复数字,但要对插入的重复数字做合适的处理,使得数据不会丢失。

插入:二分法查找+递归。

合适的重复数字处理:??

你可能感兴趣的:(【富途牛牛】Android 面试)