Android开发经验谈

2020我的头条面试之旅,面试官不会的我都会完爆面试官,轻松拿下

2020-09-08  本文已影响0人  程序员面试秘籍

今日头条秋招面试

ps:投头条主要是因为听说头条的笔试面试难度都高,想试试。最开始也没打算去头条,所以直接投的北京Android开发。

大概情况

头条走的内推,但还是参加了统一的笔试(有概率免笔试),笔试印象不太深了,只记得有两个算法题,而且难度都挺大,是那种很容易做对30%但很难做对100%的算法题,不过凭借着我刷题的功底(以及当时的灵机一动),还是把两题全都做出来了。

然后就收到了头条视频面试的通知。值得注意的是,头条的笔试刷人比例很大,我周围基本没有人进头条的面试。面试一共三轮,每轮面试完后几分钟都会接到HR的电话通知面试是否通过。

一面

一面大概持续了一个小时。问的问题印象不太深了,主要问的都是计算机基础、Java基础和Android基础的问题,但问的深度较深。比如问到Java并发的时候,就让我用代码来演示线程之间的同步;还深入到了wait()和notify()的工作原理(锁池,唤醒的native实现),以及notify()和notifyAll()的区别、notify()可能造成死锁的问题。印象中没有要做算法题(如果有也应该是LeetCode Easy难度的)。一面完面试官就直接让我等二面了。

二面

二面大概持续了一个小时。二面记的也不太清楚了,挑几个我记得的说。最开始是问到了一些Java基础,比如int和Integer的区别之类的。然后还用实例让我分析Java面向对象编程的一些细节,比如内部类的性质、什么时候用内部类、内部类和静态内部类的关系。还问到了一些进制的问题,比如数的二进制表示、与十六进制的关系、移位运算。问完这些就开始看着我的简历问,问到了我Python学的怎么样(项目中用到一些Python)、怎么学习Python的、主要拿来干什么之类的问题。

然后面试官让我解释一下YUV颜色空间,这个让我心里一惊,因为这个第一个问我YUV颜色空间(整个秋招只有两个面试官问到YUV颜色空间,另一个是网易游戏),而且看样子面试官是了解YUV颜色空间的,要知道只有专门做图像视频的才会了解到这些;然后我就详细介绍了YUV颜色空间,以及对应的如I420和NV21格式。随后面试官又问我懂不懂Android上的codec(因为我简历上写了Android的MediaCodec),我说我用过MediaCodec,面试官又问主要用来干什么,我说拿来做视频硬解码。然后面试官针对MediaCodec的使用、注意事项等问了我十多个问题,我都一一很快作了回答。到这里我基本就反客为主了,因为用MediaCodec的人很少,而我因为科研的关系专门钻研过MediaCodec,还实现了第一个通用的视频解码方法,可以说对MediaCodec了解的很深了;而面试官可能就是刚刚入门,正在学习MediaCodec,所以我的回答就是游刃有余了。

面试官问完这些问题后很兴奋,看我全都答上来了就觉得我的面试应该算通过了,但他看了看时间发现才四十多分钟,于是就说再出个算法题我做,就是一道经典的算法题——两个字符串大数相加,早有准备,所以一口气就写出来了。最后结束的时候面试官跟我说非常希望我能去头条实习。最后我问面试官为什么他会了解MediaCodec这么冷门的东西,面试官说他目前正在参与西瓜视频APP的研发,接触到视频处理,所以就了解到MediaCodec了。


三面

然后就是三面了,三面也大概持续了一个小时,因为网络的原因,是电话面试的。三面的画风和前两面不一样,没有问太多技术方面的问题。最开始还是让我介绍项目,介绍完了就问我项目中遇到的问题和解决方法,这个我回答的很细,面试官也问的很细;因为这个之前准备过,所以答的也不错,光这个问题就花了大概半小时。面试官之后问我说似乎解决这个问题并没有用到太多技术,我回答说是的,但最困难的应该是寻找原因、作出尝试、再寻找原因、再作出尝试的过程。

然后就是问我我的项目代码进行过怎样的优化、现在还存在哪些问题,我说以前代码结构太差,牵一发而动全身,后来学习了设计模式,代码结构就清晰了很多,面试官又仔细问了我用到了哪些设计模式,是怎么改造代码的;然后问存在的问题,我答还缺乏一个通用的框架来支撑各种不同的二维码,然后面试官问了我继续改造的思路。最后面试官跟我说虽然前面两轮面试问了很多基础,但他还是要考考我,问我Java里有哪些Map。这题倒是把我难住了,因为我只是看过Map的各种继承的图,还没专门背下来过,于是我就只说出了HashMap、LinkedHashMap和TreeMap(实际还有ConcurrentHashMap等),然后跟面试官介绍了典型的使用场景。这样就结束了三面。

三面结束后过了十几分钟就接到HR电话说面试通过,接下来几天会有HR的电话面试。然后等到HR电话面试,实际就是聊聊天,HR了解一下我拿到offer的情况、对城市的选择、能否实习等,然后问我对部门有没有喜好(今日头条、西瓜视频、抖音、火山小视频等),因为我也不在意,就说没喜好、都可以。剩下的就不仔细说了。

再后来就是接到了HR沟通薪资的电话,HR说我分到了主端(即今日头条),然后给我的是sp,后来发现是sp里的最高挡。

面经

操作系统

  1. 进程和线程,线程的状态以及状态切换原因,什么时候会导致阻塞态?中断异常有哪些

  2. 死锁

  3. 如何实现两个线程打印1-100自然数。

JAVA

  1. MVC,MVP架构以及区别MVP中view和presenter互相怎么调用?

  2. 重载重写、堆栈

  3. 深拷贝、浅拷贝,深拷贝怎么实现

  4. public\private\proteced的区别,外界能否访问到,反射

  5. StringBuilder和StringBuffer的区别

  6. final关键字

计算机网络

  1. get、post方法的区别

  2. 7层网络模型,tcp、udp、ip分别哪一层

  3. 流媒体协议

  4. tcp\udp区别,如何实现可靠传输

  5. tcp三次握手,两次不行吗

安卓

  1. 四种启动方式、Activity生命周期,onSaveInstance什么时候调用,活动A到活动B执行什么方法

  2. Handler消息传递机制,如果looper中有很多消息,会卡顿吗,为什么不会卡顿

  3. ANR原因,如何快速定位,AS中有一个工具,可以生成一个文件,里面记录着发生ANR的方法和原因。

  4. 描述事件分发机制,用了什么设计模型

  5. 内存泄露的情况

  6. Service的生命周期,通过bindService()或者startService()打开了一个Service,如果再打开一次,会执行什么方法

  7. ImageView如何加载很大的bitmap,采样率怎么计算

算法

  1. 两个栈实现一个队列

  2. 如何判断链表是否有环
    其它更多面试资料,以及面试前用的学习笔记,书籍整理在了我的

GitHub】 需要的自行下载觉得不错,记得点个星!


上一篇下一篇

猜你喜欢

热点阅读