腾讯TST内推Android岗一面
面试电话是在昨晚7点半打过来的,因为刚好要去健身,已经出门了,所以和面试官商量后十分钟后再打过来,我先回宿舍。
面试感觉就是直奔项目去,自我介绍和技能经验模块都不看,直接一上来就问项目的东西。项目这边经验不是很多,所以有点吃亏。
计网:
get/post(这个问得比较详细,包括安全性和性能也被问了一些),断点续传实现原理,tcp头的字节数
Android:
布局介绍,介绍设计模式(有点坑这个,面试官问我设计模式有多少种,我说23种,然后面试官就叫我给他介绍下我比较熟和接触多的设计模式,由于之前撸了《Android源码设计模式解析与实战》,所以这个还好,讲的过程,顺便提了下设计模式在源码中的应用。),跨进程通信方式,Activity的继承树,介绍四种启动模式,解释窗口和activity的关系。
java:内存泄漏场景,内存泄漏工具介绍,java中int的字节数,怎么判断一个对象可以gc
C:long的字节数,有没有用c做过项目。
算法:假设有个屏保程序,每秒擦除屏幕10000个点,设计一个合适的数据结构和算法实现这个功能。
(算法这里有点跪,我一开始是说用hashmap保存已经擦除的点,然后面试官说到后来大部分的点已经被擦除了,剩下少部分的点的时候很可能用random
get不到还没被擦除的点。然后想了想我就说根据屏幕大小xy定义个二维数组a[x][y],初始值为0,擦除后设置为1。这样相比hashmap就好很多了,毕竟节省了哈希的时间。可是现在想起来,第二种方法并没有解决后来未擦除的点的获取。然后我就说可以自己定义一个数据结构,这个数据结构保存着屏幕所有的点,把获取要擦除的点的功能封装到数据结构里面,然后每次擦除了点之后就将点从数据结构中移除去。然后面试官这时候就说了,让我描述下怎么设计这个数据结构。gg思密达,那时候太紧张,没想出来。
不知道有哪位哥哥姐姐有思路,求指点。。。
)