金九银十面试季在即,Android程序猿如何斩获offer?

开篇

跳槽,这在 IT 互联网圈是非常普遍的,也是让自己升职加薪,走上人生巅峰的重要方式。那么作为一个普通的Android程序猿,我们如何才能斩获大厂offer 呢?

金九银十面试季在即; 还在迷茫踌躇中的后浪们,如何才能在面试中让自己脱颖而出,让面试官眼前一亮?

下面,我将结合我过往的面试经历来帮大家进行分析

腾讯音乐:

一面

一面是一个电话面试,下午6点左右特地找了一个地方电话面试,6点准时电话就过来了,不得不说,这方面还是专业的,时间有点远了,依稀记得一些题目。。。

1、Object的方法有哪些?
2、为什么要有HashCode方法,hash算法的原理,在Java中哪些地方用到,进而问到了HashMap的源码
3、Java有几种锁,synchronized与Lock有什么区别,Lock的实现原理,有没有碰到死锁的情况
4、Android源码中用到了哪些设计模式,举例说明
5、一个Android正常启动有多少个线程?(这里当时是比较懵逼的,第一反应是一个主线程,然后觉得应该不止这么简单,想到应用Activity启动的话,应该还有2个Binder线程,可能一个管理JVM的线程,面试官接着问还有哪些。。果断放弃不知道…)
6、Binder机制的实现思想
7、简单描述Https的实现思路
8、描述下快速排序的思想,时间复杂度?什么场景对应着最坏情况?
9、给定无序数组和一个值,找到两个数和为值的元素,不能使用额外空间复杂度(不要使用HashMap)

二面

二面是视频面试,还是个周六下午。。。

1、TCP/IP四层模型,网络层和传输层有什么区别?网络层的主要工作是什么
2、socket.accept()函数对应着TCP三次握手中哪一次握手,哪个函数代表连接建立完毕,四次挥手的过程?
3、有做过哪些优化工作,卡顿优化,内存优化,启动优化,APK体积优化,每个做了哪些工作
4、JNI开发中有碰到什么问题?怎么定位native crash
5、递归非递归反转链表
6、打印回环数组

三面

过了整整一周到了隔周五上午,接到了第三面的面试通知,约的是隔周三上午 10:30 ;第三面面试官时不时的面带笑容,给人很轻松的感觉

1、Looper消息机制,postDelay的Message怎么处理,Looper中的消息是同步还是异步?什么情况下会有异步消息
2、事件分发机制的源码
3、android的屏幕刷新机制,怎么优化UI卡顿情况
4、有没有使用过插件化框架,实现原理?
5、你在项目中碰到什么比较棘手的问题?怎么解决的?
6、找到一个无序数组中第一次出现最多次数的元素

字节跳动:

一面

1、自我介绍
2、进程如何保活,怎样做才能让APP尽量不被杀死等。
3、问了两个算法题,一个是跳台阶的问题,另一个是链表判断是否有环。
4、软引用跟弱引用的区别 Handler 引起的内存泄露原因以及最佳解决方案
5、 Binder机制的作用和原理?
6、性能优化,黑白屏怎么处理?
7、内存中如果加载一张500*500的png高清图片.应该是占用多少的内存?
8、问java内存GC原理。
9、对JNI是否了解 如何加载NDK库 ?

二面

1、自我介绍
2、谈谈MVC、MVP和MVVM,好在哪里,不好在哪里 ?
3、view的事件分发机制
4、viewGroup 怎么知道view有没有消费事件
5、实现单例模式有几种方法 ?
6、内存泄露和内存溢出的区别 ?
7、传递数据的方式,主要是自定义的类需要继承的那个接口.
8、你用JNI来实现过什么功能 ?怎么实现的 ?
9、UI性能优化 。

三面

1、自我介绍
2、你遇到最难的问题是什么
3、可以在子线程直接new一个Handler吗 ?怎么做 ?
4、Message可以如何创建 ?哪种效果更好 ?为什么 ?
5、android冷启动优化
6、android弱网优化
7、android 视频相关有了解么?
8、android长图片加载怎么实现
9、让你做一个单例,你会怎么做
10、算法题目:排序二叉树转有序双链表,要求在原来的树节点基础上增加。

四面

1、自我介绍
2、项目里面的难点(如何解决,解决方案是什么)
3、图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?
4、android 动画机制有哪些?
5、装饰模式和代理模式有哪些区别 ?
6、直播中的动画要怎么做?要做成动态的,比如礼物是可以配置的?
7、算法题:找出数组中的k数。k数的定义:比位置位于这个数前面的数字都大,且比位置位于这个数后面的数字都小的数字(数组首尾的数字不用管)(面头条遇到的) [4,1,3,2,7,9,8,10,12] 此数组中的k数为7和10

HR面

1、自我介绍
2、未来的职业规划
3、说一下自己平时的学习方法
4、你认为这些学习方法里最有效的是哪一种?
5、你觉得你有什么优点和缺点?如何克服这些缺点?
6、评价一下之前的面试官,或者说之前的面试官有没有给你留下印象最深刻的一点
7、你对字节跳动有什么看法?
8、你平时都用字节的哪些产品?有什么好的建议吗?
9、期望薪资

总结

通过上述的面试题,我总结在了Android大厂面试的过程中,我们需要注意的关键点以及我们需要做怎样的准备

调整好心态

心态是一个人能否成功的关键; 如果不调整好自己的心态,是很难静下心来学习的,尤其是现在这么浮躁的社会,大部分的程序员的现状就是三点一线,感觉很累,一些大龄的程序员更多的会感到焦虑,而且随着年龄的增长,这种焦虑感会越来越强烈,那么唯一的解决办法就是调整好自己的心态,要做到自信、年轻、勤奋; 这样的调整,一方面对自己学习有帮助,另一方面让自己应对面试更从容,更顺利

知识储备

对于一名程序员来说,技术知识方面是非常重要的,可以说是重中之重。要面试大厂,自己的知识储备一定要非常丰富,若缺胳膊少腿,别说在实际工作当中,光是面试这一关就过不了; 对于技术方面,首先基础知识一定要扎实,包括自己方向的语言基础、计算机基础、算法以及编程等等

我根据自身的一个面试经历,总结了在面试中出现的面试题及答案,将其整合成PDF文档;

有需要的小伙伴: 可以私信发送 “面试”即可免费获取


最后我想说:

学习没有捷径可言,我们要注意记学习,不仅要记,还要写心得体会,文字笔记、画图、总结等,方式很多,但是一定要自己认真去做,不要太相信自己的记忆,只有反复记忆,加深理解才行

同时,对于程序员而言,不单单是死记硬背,我们有更好的方式去学习,比如写demo去验证。复习知识点时,要及时跟你做过的项目结合起来,这样在面试时就知道怎么聊了,由项目讲到知识点,由一个知识点串联到另一个知识点。复习到一定阶段,可以尝试着去把这些东西串联起来,由点及面,形成知识体系

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们

技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面

Android 架构师之路还很漫长,与君共勉

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值