前言
本人普通二本毕业去的一家小公司(自学java后转Android),半年后去了某知名大厂, 后来继续在大厂之间跳槽 。如今已娶妻生子 买房定居。这几年经历过面试,买房,学车,结婚,生子,职业沉淀。 也算是真正领悟到了编程到底有什么意义!编程的意义这个话题留到以后再谈。每年都有无数年轻的程序员,加入软件行业。他们在学校里学过编程,但是对这个行业的现实一无所知,我今天介绍这个行业的一些实际情况。这几年自己在技术博客沉淀很多技术。其他方面也算成功,至少和同龄人和自己起点一样本科生来说,作为过来人有几点说一下:
1 、 仪容仪表
很多人看到这个就会问了,难道我去面试还得穿的跟结婚一样吗?答案是"当然" 因为这家公司很有可能就是你以后吃喝拉撒睡的另一个家,那你的这份工作就是你的"伴侣" 或许会比伴侣更加贴心,因为它每个月会给你带来"money" 还有什么比发工资更高兴的事情呢? 如果有 那一定是工资太少,所以一想到这,你还会穿着背心,脚踩人字拖,满脸油脂和胡渣去面试嘛,有面试的朋友们注意了 看完这篇文章就快去洗头洗脸,好好收拾下自己,先给面试官一个美好的第一印象,别急! 面试之路才刚刚开始。
2、言谈举止(自我介绍)
自我介绍是一门很大的学问,自我介绍可以非常直观的让面试官对你有一个初步的了解 一份好的自我介绍,能够让人瞬间对你产生兴趣,(自己喜欢的人也是可以的哦),如果自我介绍做的一塌糊涂,可能你一番话说下来,面试官连你的名字都没记住,那么自我介绍到底要从那些方面说呢?
姓名年龄毕业学院家庭住址基本信息肯定要说吧,其次就是自己的优点缺点,有些小伙伴就是优点一大堆,说的缺点就哑口无言了,这其实会给面试官一个不能正确认识到自己的印象,所以大家要雨露均沾,不要害怕说出自己的缺点,但也不要夸大其词,说自己的缺点是:爱打麻将,动不动就骂人,打人,小伙伴们,我们是去面试的,不是去吸引仇恨的哈,接下来是我们的言谈举止,要谦逊,低调,自己Android 技术非常牛逼的也不要太唯我独尊了,毕竟天外有天,人外有人,技术没那么厉害的呢也不要太卑微了,对着面试官说:求求你给我一份工作吧!貌似也不太好。
3、专业技能(Android 开发)
上面都是我们的软素质这一块,最最最重要的还是要看咱们的硬实力,也就是我们的Android 开发技能的掌握,像咱们在社会上摸爬滚打多年的老将,所以面试官就会问一些Android 基础、Java基础、项目经验、UI、性能优化、架构、框架等技术问题,Android面试中会问到的题,稍后我会整理一些。
当面试官看你简历中做过那些项目,面试官可能就会问你负责的项目模块以及用到了哪些技术,并让你详细的分析自己在项目中体现的价值,也可以跟面试官探讨一些在项目中遇到的专业技术,这样会证明你项目的真实性和你喜欢学习上进的态度,让面试官对你的印象更深。
还记得那些年一起刷过的面试题吗?
公司1面试
1.java有什么特性,继承有什么用处,多态有什么用处
2.反射是什么,在哪里用到,怎么利用反射创建一个对象
3.代理模式与装饰模式的区别,手写一个静态代理,一个动态代理
4.对象加载的过程,属性先加载还是方法先加载
5.垃圾回收机制与jvm结构
6.自定义View,事件分发机制讲一讲
7.http与https有什么区别
8.Activity启动模式,以及各启动模式生命周期问题
9.静态方法,静态对象为什么不能继承
10.Activity怎么启动Service,Activity与Service交互,Service与Thread的区别
11.介绍一下android动画
12.Launcher启动App的流程,中间有几种跨进程通信(socket)
13.Handler通信,Binder通信
14.你碰到过什么内存泄漏,怎么处理
15.RXJava怎么切换线程
16.Fragment hide show生命周期
17.平常有用到什么锁,synchronized底层原理是什么
公司2
1.简单描述下Handler,Handler是怎么切换线程的,Handler同步屏障
2.Glide的缓存,有用过Glide的什么深入的API,自定义model是在Glide的什么阶段
3.讲讲mvc,mvp模式,presenter内存泄漏的问题
4.ANR了解过吗?有没有实际的ANR定位问题的经历
5.性能优化你做过哪些?
6.有什么实际解决UI卡顿优化的经历
7.有做过什么Bitmap优化的实际经验
8.项目搭建过程中有什么经验,有用到什么gradle脚本,分包有做什么操作
9.组件化有详细了解过吗?ARouter详细原理
10.讲一下事件分发机制,RecyclerView是怎么处理内部ViewClick冲突的
11.mainfest中配置LargeHeap,真的能分配到大内存吗?
公司3
1.一个大致有序的数组如何排序,最快时间复杂度
2.如果叫你实现,你会怎样实现一个多主题的效果
3.如何自定义实现一个FlexLayout
4.tinker的原理是什么,还用过什么热修复框架,robust的原理是什么?
5.说说你对注解的了解,是怎么解析的
6.synchronized是公平锁还是非公平锁,ReteranLock是公平锁吗?是怎么实现的
7.泛型是怎么解析的,比如在retrofit中的泛型是怎么解析的
8.mvp与mvvm的区别,mvvm怎么更新UI,databinding用得多吗,databinding的原理?
9.kotlin 的原理?
10.在项目中有直接使用tcp,socket来发送消息吗
11.如何在网络框架里直接避免内存泄漏,不需要在presenter中释放订阅
12.生命周期都是通过什么调用的?有用过AIDL吗?
13.讲一下RecyclerView的缓存机制,滑动10个,再滑回去,会有几个执行onBindView
14.如何实现RecyclerView的局部更新,用过payload吗,notifyItemChange方法中的参数?
15.讲讲LinkedHashMap的数据结构
16.put post有什么区别
17.A Activity打开B Activity的生命周期变化,会有什么方法打断吗?
18.Fragment hide show生命周期变化
19.Fragment replace生命周期变化
公司3(二面)
1.为什么考虑换工作
2.屏幕适配做过什么工作?
3.你们网络框架用的什么?为什么?
4.如果让你来开发B站的一个页面,哪一个页面可以很快入手
5.性能优化你做过什么工作?
6.h5与native通信你做过什么工作?
7.插件化的主要优点和缺点是什么?
8.你觉得B站目前的APP有什么问题?
9.如果产品要求你开发一个音频播放功能,你会怎么着手?预计会有什么坑?
10.ViewPager切换Fragment什么最耗时?
11.线程间同步的方法
12.锁之间的区别
公司3(三面)
1.介绍一下你自已和项目
2.说说为什么考虑离职
3.说说对你们原来公司的印象
4.为什么想来B站?你在B站上常常在看什么?
5.期望薪资是多少?
6.你对搬到上海有什么想法?
尾声
开发是需要一定的基础的,我是10年开始进入Android这行的,在这期间经历了Android的鼎盛时期,和所谓的Android”凉了“。中间当然也有着,不可说的心酸,看着身边朋友,同事一个个转前端,换行业,其实当时我的心也有过犹豫,但是我还是坚持下来了,这次的疫情就是一个好的机会,大浪淘沙,优胜劣汰。再等等,说不定下一个黄金浪潮就被你等到了。
这是我在这行工作十几年积累的一些资料,如果还想继续在这行业走下去的,或者现在打算跳槽,可以私信【学习】我愿意免费分享给大家。
面经整理在了我的【GitHub】需要的可以点击查看获取!(还有一些我的学习资源路线)
- 330页 PDF Android核心笔记
- 几十套阿里 、字节跳动、腾讯、华为、美团等公司2019-2020年的面试题
网友评论