[面经]腾讯一面

昨天晚上在图书馆自习,突然接到了来自广东深圳的电话,想到了是腾讯打来的,内心很忐忑,接上了。

面试官一听就是广东人,人很好。就问我能不能进行大概二十分钟的面试,我说可以。然后就开始了。首先让我自我介绍,我就简单介绍了一下自己,说到了自己的技术经历。然后他问我说看到简历上有写创业经历,好像面试官对于这段经历非常感兴趣,大概聊了几分钟。具体就不说了。然后就说能帮我推荐到虚拟现实部门,我说不用,想先做好移动开发。然后他又问我实验室负责人的一些事项,问我给实验室成员讲课从头到尾是如何进行的。我给他具体说了下流程,如何准备,上课的思路。之后就开始围绕项目来说了,他问我简历里面的一个项目,寻书,是怎样的一个应用。我就说了一下大概是什么应用。然后问我团队分工。然后问我在里面负责哪些工作,我说了自己写的部分,其中有注册登陆,他就问我注册登陆如何实现,有没有使用开源的库。我说没有,基本都是自己的逻辑实现的,先写好界面,用户输入的一些边界条件的判断。利用SharedPreference实现应用的自动登录,然后他问我SharedPreference的底层实现,我说是存在本地,具体的没有了解过。他说如何实现用户名和密码传到服务器,我说我用到是第三方的封装好的服务器接口,比较简单。那他问我你写的所有的都只是用的接口吗,我说我写新闻客户端的是从服务器端获取数据,使用Http协议。利用 Gson进行解析,将数据显示在ListView上。接着他问你有用到什么开源框架吗?我说XUtils,那你了解过源码实现吗?我说大概了解过,然后说了一下XUtils的一些源码,通过注解方式等。接着他问那你了解过内存泄漏吗?我说了解,就是无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间的浪费。然后紧张了,就把Android的OOM给扯出来了,然后他提示我只是问我内存泄漏。接着问我对于GC有什么理解吗?我晚上刚准备看GC,没来得及看,就只能说了解一点点。然后说了解Java中的强软弱虚引用,而且自Android2.3之后谷歌官方不再推荐使用软引用,很容易被垃圾回收。接着他问我平时是怎么学习Java的,我说看经典的书籍,比如《Java编程思想》、《EffectiveJava》等。还有就是多写代码,看别人的博客,看一些设计模式,提高自己的代码质量。接着他问那你了解哪些设计模式,我说单例,工厂,策略等。那你说说单例模式吧,我说了一下单例模式的简单实现,然后说我看网上一种比较好的方式是用到内部类来实现单例,可以避免线程安全等问题。然后他问我为什么会有线程安全问题,我说需要同时需要保证getInstance是同步的,否则不同的线程会导致多个实例的创建。违背了单例模式的设计思想。接着他问你对图片缓存了解多少?我说我在做新闻客户端的时候用到了三级缓存,然后用的是谷歌推荐的LruCache,最久最近未使用算法,他问我你了解LruCache底层吗,我说了解,是用LinkedHashMap来实现的,维护着一个运行于所有条目的双重链接列表,当内存超出预定值,就会将最久未使用的对象回收掉。同时我在应用中为了提高性能,还用到了图片压缩,因为图片的清晰度是足够的,用的BitmapFactory.Options来进行压缩。接着他问我看你简历上解决了事件分发,你能说说怎么解决的吗,我说到我用的UI框架是RadioButton+ViewPager+SliidingMenu。当我滑动ViewPager的时候,SlidingMenu就会被划出来。那么我就重写了ViewPager,将onTouch()返回false。还有就是实现右滑返回的时候,我写Demo的时候没有问题,但是用到实际工程中子view有ListView的时候就会将事件分发下去,右滑就没有响应了,我查阅资料,原来是事件分发的原理,我接着详细和面试官讲了一下事件分发。包括那三个重要的方式,事件分发,事件拦截等,具体的分发机制说了一下,说得不错。所以我就在onInterceptTouchEvent里面添加了onTouch方法,不管有没有拦截,都可以实现右滑返回。面试官说基本完了,还有什么要问我的吗我就问他安卓方面如何向架构师发展,他说太宽泛,一时说不清楚,接着问了些招聘的事情,他说了很多。具体就不说了,基本情况大家也都知道。看了下时间30分钟多一点。

基本就是这样,问的很基础很深。学习还是要扎实~

相关文章
相关标签/搜索