前言
每增长一岁,就增长一份迷茫,对于未来的规划,当然还是想去大厂,拿着高薪,漂亮的福利,如果有一天实在待腻了也有相当不错的技术背景。对于一个具备独立开发能力,有带团队经验的技术人来说,想去大厂应该是没问题的,但每次大厂的面试都会无情的打脸。(比如下面面试经历。。。)
腾讯一面(3月12日 电话面试 70min)
-
开头叫我做了自我介绍。
-
然后面试官说先问些比较基础的问题吧,然后就问了 数据结构里面的栈和队列有什么区别(说了特点,和实现) 数组和链表的区别(内存结构) 读写这块链表和数组的区别 了解的排序算法有哪些(选泡插快归堆) 又问了时间复杂度 又问了这些排序算法当中效率比较高的是哪些 问我了解快速排序吗 回答完了后,emmm停顿了一会,面试官说ok~~然后开始问操作系统
-
进程和线程的区别(我说的有点简单,面试官不太满意,追问我还有吗) 操作系统当中的死锁怎么发生的,什么是死锁? 怎么解决死锁 内存里的堆和栈有什么区别?
-
Java里的对象可以放在栈上吗 Java里面的字符串常量存放在哪里? 然后问方法区静态常量池会存在内存溢出的风险吗 然后问什么是内存溢出? 刚才提到的程序技术器是线程私有还是共享的?还有哪些是线程私有的,线程共享的? Java当中的内存回收怎么做的? 主流的JVM垃圾收集都是什么算法? 关于Java垃圾回收还了解哪些? 然后问我什么是新生代,什么是老年代? 为什么要分新生代老年代? Java当中什么是内存泄露? 内存泄露产生的原因? 然后问内部类一定会持有外部类的引用吗? 常见的解决内存泄露的方法?
-
Java当中的线程安全怎么理解? 怎么保证线程安全? Java里面的线程有哪几种状态?
-
计算机网络的TCP和UDP有什么区别? 什么是拥塞控制和流量控制? 拥塞控制有哪些算法? 然后问流量控制。
-
然后问我安卓这块对哪些知识比较熟悉(我说最近在学习Framework这块的内容) 让我讲下视图绘制的流程
-
然后问我强项(我说并发这块) 然后问我线程池是什么原理? 并发数怎么设置比较合理? 如果无限制一直向线程池提交任务会怎样?
-
问我有了解过一些开源组件吗?(我说用过一些开源框架,比如OkHttp、EventBus、Glide这些) 然后问我看过源码没有,有没有印象深刻的地方等等。
-
问我安卓系统的源码看过哪块?
-
项目当中遇到的难的问题?
-
问安卓当中的性能优化,滑动列表非常卡会怎么优化?
-
突然想起,前面中间好像问了下硬件加速(我本来说了解,后来发现自己好像不了解,又改口了)
最后提问的机会,问了下面试官对我有什么建议,面试官就是说安卓已经发展的很成熟了,说用的多不够,需要了解原理和设计的思想,尽量多实践,然后包括语言的一些原理和特性比如说垃圾收集内存管理等等。
前面一个多星期断断续续面试,感觉自己也没有怎么学习的样子,就感觉脑袋空空,其实对于即将的面试感觉情绪非常低迷。
腾讯二面(3月20日 视频面试 50min)
-
鉴于状态显示我并不是和理解,虽然没有灰过,但是我不确定是不是PCG二面。
-
就是从项目问起,但是面试官对我说的一些操作表示这很常规,我很尴尬,后面的话问我安卓方面的强项是什么,我也没敢回答,真的很丢人。我当时整个状态大概就是想着早点结束这个面试。我觉得这次面试的问题应该也没有什么参考的价值了,因为面试官可能也其实感受到了我的心态,所以后面问的问题,唉不知道怎么形容。因为网络原因有点卡顿,所以还是花了50min的时间。
上次面试以后状态也没灰,接着给我发了下一次的面试邀请,其实这个时候我对于面试的心态真的是很难受了。感觉自己心累(这种想法,至少从心态上讲,我是真的菜)
腾讯捞面(3月24日 视频面试 50min)
-
今天开头记得问了下面试官那个事业群,原来我已经到ieg了,前面PCG面了两次已经挂了,我也不太懂,流程没有灰,面试官说前面流程已放弃,就被ieg捞了。
-
开头的话问了下项目难点,说了下自定义View。
-
问了布局优化,RelativeLayout和LinearLayout的效率差别以及为什么?
-
然后问了下滑动冲突的解决思路?
-
然后面试官问了下如果一个比较小的View包含一个比较大的View,并且触摸事件在View之外,怎么让事件传递到子View当中。
-
内存泄露以及怎么解决,内存泄露一定导致内存溢出吗,内存溢出和内存溢出的具体场景
-
软引用和弱引用的区别。
-
面向对象思想
-
xml 和 json使用的共同缺点
-
静态常量和静态变量分别是怎么加载的?
-
ArrayList和LinkedList区别,ArrayList怎么扩容,复制的话有更好的方法吗?
-
线程池的原理,线程池的状态,线程池的使用有什么不好的地方?这部分面试官是想跟协程比较来着
-
然后问我考研或者实习?
-
这次灰的很干脆,半小时不到。(然鹅,过了两个小时,我又接到了第二天晚上的面试邀请)
此时我只能说,心情复杂,本来前面灰了,本来我已经做好了等等看正式批会不会捞我了的准备,想着这段时间不面试也好,再抓紧时间总结下知识和项目。居然这么快又被捞了,万一我又挂了,岂不是又浪费一个事业群。
到了第二天面试之前,我还跟一号说,自己想放弃这次面试了,说出这句话当然是被狠狠地批评了。
晚上八点前,开始等面试官上线,坐在电脑前,回顾我失败的面试生涯。
腾讯PCG一面 (3月25日 视频面试 50min)
-
自我介绍以后,今天开始的话是问了下项目,我开始是介绍了下项目的应用场景,(面试官叫我不要紧张,然后为了缓解我的紧张,就先问了下我实验室的情况),
-
问了下项目当中硬件部分怎么和服务端交互的。
-
然后主要问了下内存泄露是什么,内存泄露怎么产生的,怎么解决内存泄露等等。 (鉴于之前每次开头,项目都讲的不好,这次稍微划了下重点。)
-
然后问布局优化做了些什么工作,提了下扁平化布局、布局复用、动态加载view、防止重复绘制的一些内容,
-
接着开始问我滑动冲突怎么解决的,说完以后我又补充了下滑动冲突解决以后的另外的一个问题和解决思路等等。
-
然后面试官根据我回答的中的一些点问我,如果要自己实现一个onTouchEvent方法,怎么对手势进行判断,比如长按。我就从事件序列的分析开始说,后面说到通过发送延时消息,在延时消息触发之前的一些判断以及延时消息触发以后的操作等等。(期间面试官有进行引导)
-
然后问我自定义view的话需要重写哪些方法,就说了下视图绘制的过程,测量布局绘制分别完成的任务。
-
问了哪些因素会决定测量大小(面试官说有三个因素,但是有一个经常忽略),我说了下父View和子View等等,(面试官说,我觉得你可能是知道的,我说了一些思路后,他表示他想说的第三个因素其实是程序员的意愿)
-
然后面试官表示这部分问到这,说要问点很基础的,然后问我学了什么数据结构(数组、链表、树、图),就问了下链表和数组相关的,问了下ArrayList和LinkedList相关,单链表时间复杂度1的情况删除某个节点等等。
-
面试官好像对我的两个项目还蛮有兴趣的,问台灯有没有上线投入使用等等,也问了下另一个AndroidThings的部分在物联网方面是个什么情况(表示是做成了个类似手机的移动设备,还是有点让人失望),问我是不是大三等等。
-
然后没有然后了,面试官问我有什么问题要问的?
-
我就问了下为什么今天面试的时间这么短(技术相关问题<40min),面试官笑问,你是有什么擅长的没有表现吗。
-
问了下建议,面试官说开头紧张,其他还可以(可能面试官说话比较照顾人吧)
-
问了下阅读源码的经验方法,面试官大概是个实在人,说这个问题有点大不好回答,跟我说IDE要设置好点就OK。
-
想起开头没有问面试官事业群赶紧问了下,PCG灯塔,就问了下这个组的一些内容。
上午十点多接了一个电话,标记广东广州的广告推销,接了以后我没说话,电话那端也没说话,二十秒以后对方挂掉了,心想真是一个不称职的广告推销电话。后面这个电话刚挂掉,又来了一个电话,广东广州座机,想想还是接了,接了以后过了几秒,喂,发现是腾讯的电话。(我真傻,真的)
腾讯PCG二面 (3月26日 电话面试 30min)
-
开头问了下项目,分别说了两个项目的架构和应用场景。
-
然后具体说了下两个项目的内容,面试官还想问我服务端怎么完成的,数据库用了什么。
-
项目难点等等。
-
问了为什么写这个项目等等。
-
为了为什么学习安卓开发(说了下自己最开始的认识,和后面的想法,关于Java生态和安卓系统的一些简单想法)
-
我有什么别人没有的特点(说了下上进心,耐力,在实验室的状态等等)
-
其他编程语言开发方面(说了下C、C++、JS这些)
-
又问了下数据库方面,安卓用什么数据库等等。
-
问如果找实习希望什么方向(说短期安卓开发,因为现在是学这个的,然后也希望腾讯的产出中可以有自己参与的一份等等)
-
后问问题的话就是问了下如果能进去的话要学习写什么东西(面试官说,这个啊,要学的东西多了等等,后面又说说了下灯塔这边的业务方面的内容,提了些性能、高并发、SDK开发等等,我觉得蛮期待的)。然后说会根据状态变化,大概两三天有人找等等。
然后3月28日,状态从复试变成了HR面试。
感觉这个月几乎就是在面试,大概是我自己太菜了,我一边很紧张,一边感觉根本没办法专心学习。自己心态也挺不好的,这段时间都没有胃口,每天几乎都没吃什么东西,情绪一直低迷,感觉看不到一点希望。而自从状态变成HR面以后,我开始吃嘛嘛香,感觉自己真是挺搞笑的。真的希望早点结束面试,开始学习新的东西,脑袋空空真的很没安全感。腾讯的流程目前也没走完,感觉还是很担心的。
许个愿吧,HR早点翻我牌子!早点结束流程,期待一个offer!
题外话
现在外面面试问的的确比较多,要求也挺高的,行情不好,薪资也不好要,所以心态一定要放好,找好自己的定位,心态一定要好。
面试之后要尽量做到总结,在我最开始的时候,没什么准备就出去面试,被打击一通之后,总结了七八家面试题,会发现面试问到的都是那些知识点,可能角度不一样,但是你只要深度够,他怎么问,你基于原理来回答,基本上都没差,连续四家公司都走到了HR面,可以说面试的感觉上来了。前面的总结积累终究没有白费。
当我看到很多面试题,针对题来的时候,题会很多,而且有时候你会觉得你的题都会了,但是面试的时候还是面不好,说明你的知识并不扎实。或者你只是会了这个题,并没有融会贯通。所以不管怎样,刷题还是要坚持的,并且要系统的学习。
互联网行业是一个知识迭代非常快的行业,如果你不养成学习的习惯,其他人不会停下来等你,这样的话你就等于一直在退步!
在这里我也分享一份我这些年收录整理的Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料
《Android架构视频+BAT面试专题PDF+学习笔记》
毕业后,我的第一个5年按照计划进行了,那么拿到offer后,下一个5年也有要清晰的目标。接下来的时间,是形成思维方法论和知识体系的阶段,同时也要培养自己团队协助与管理能力,提升自己的眼界,从而有更长远的发展。
至于心态,脚踏实地,不傲不馁。
最后,希望大家都能够有自己清晰的发展路线,希望大家都能顺利拿下offer,进入理想的公司,共勉!
网友评论