「 Android开发 」——金九银十,关于面试的一些感悟和建议
今天突然想聊聊面试了,为什么要聊面试呢?因为最近有很多公众号和简书上的朋友跳槽让我看简历,也有很多朋友跟我吐槽说:面试又被虐了,火箭造的简直惨不忍睹,都有点怀疑自己的能力了。其实,我想说:正常,之所以这么说是很多朋友可能没有认清自己存在的一些问题。哪些问题呢?
两点:
一是,没有认清自己的技术实力,三天打鱼两天晒网的复习,对提升自己是没有任何一点效率的;
二是,去面试之前,没有真正了解公司。
其实说实话,我们作为Android程序员,最起码得有 80% 的人都想进入大公司工作,比如:BAT ,小米,滴滴,今日头条,美团,华为等这样的大公司或者移动互联网界的明星企业。
进大公司的好处显而易见,福利好,待遇高,工作稳定,不像很多创业小公司说倒闭就倒闭,尤其是移动互联网进入下半场之后,很多创业公司都相继倒闭,而且Android开发者也越来越饱和,随着Android程序员越来越多,自然就进入了激烈竞争的恶劣环境,优胜劣汰的自然规律是不可逃避,也规避不了的。
据 GitHub 统计,就今年一年加入 GitHub 的中国程序员就有 70 万,可以想象到,当下的竞争得有多激烈。
即使有 20% 的程序员不想进入大公司,也无非就是要么就是认清了自己的现实,自己并不是那么天赋异禀,也并不是那么热爱编程,有自知之明的心态,在个小公司干也挺好,倒闭了大不了再换,反正 BAT ,我也进不去。要么就是人家就是 BAT 的大神想出来创业当移动互联界的创业家,想功成名就,即使创业失败,我依然可以鹤立鸡群,潇洒回到 BAT 的世界,帅气的依靠自己在业界的名声依然能够得到一份好的工作。
说着说着,好像有点二八定律的感觉。NO,上面的 80% 和 20% 是我自己的不完全统计,不必当真,举个例子而已。
Android程序员面试成功的因素到底在哪里?
关于面试这件事,我想我们大家得明白这样2个面试准则:
第一准则
就是在移动互联网进入下半场的今天,技术能力所占的比重越来越大,如果你想在一个公司想要长期性的存在下去,那只有不断的提升你自己的技术实力,你要知道资本是不会养闲人的。作为闲人存在的每一分钟资本都得多付每一分钟的薪水,你觉得老板会答应吗?
这已经不是一个靠会四大组件就能够获取到满意薪资的时代了。经过一波一波的淘汰与洗牌,剩下的都是技术的金子。就像大浪褪去,裸泳的也会慢慢上岸。如果你想要胜利的旗帜挂在你的白帆上,唯一的出路只能是不断的学习、进阶
第二准则
就是我为什么建议朋友们面试就得去大公司呢?你看,现在已经逐步进入拼技术的时代了,所以技术依然越来越重要,而这是在小公司无法体现和提升的。
你们之所以受打击是因为平时做项目,做产品也可以独立完成,甚至很好的完成,但是面试失败的面试是基础太差。所以,你在小公司确实可以能够很好的掌握并做一个项目,但是大公司重视的是你的基础啊。
所以要清楚这么一个准则:面试,大公司重基础和深度,而小公司重能力(这里的能力指:能不能马上上手做一个项目的能力)。
Android程序员如何提前进行面试准备?
我在前面说了,面试惨不忍睹的就是由两个问题导致的,一是,没有认清自己;二是,没有了解公司。总结成一句话就是准备不足。那么如何在面试前做好充分准备呢?
今天我想分享的是美团技术专家首发的一份「Android面试宝典」,从互联网一二线企业收集的Android热门面试知识点,让人看了真的不得不推荐,太完整了!
Android 基础知识点
- 四大组件的生命周期
- Activity 之间的通信方式
- 横竖屏切换的时候,Activity 各种情况下的生命周期
- Activity 与 Fragment 之间生命周期比较
- Activity 上有 Dialog 的时候按 Home 键时的生命周期
- 两个 Activity 之间跳转时必然会执行的是哪几个方法?
- 前台切换到后台,然后再回到前台,Activity 生命周期回调方法
- Activity 的四种启动模式对比
- Activity 状态保存于恢复
- fragment 各种情况下的生命周期是如何管理的
- Service 的开启方式,原理是怎样的?
- 请描述一下 Service 的生命周期
- 请描述一下广播 BroadcastReceiver 的理解,广播的分类,它实现 通信的底层原理是怎样的?
- AlertDialog,popupWindow,Activity 区别
- Application 和 Activity 的 Context 对象的区别
- Android 属性动画特性
- 如何导入外部数据库?
- LinearLayout、RelativeLayout、FrameLayout 的特性及对比,并 介绍使用场景
- 谈谈对接口与回调的理解
- 介绍下 SurfceView,它的应用场景是怎样的,它与普通 View 的区 别是什么?
- 序列化的作用,以及 Android 两种序列化的区别
- 差值器
- 估值器
- Android 中数据存储方式
Android 源码相关分析
- Android 动画框架实现原理
- Android 各个版本 API 的区别
- Requestlayout,onlayout,onDraw,DrawChild 区别与联系
- invalidate 和 postInvalidate 的区别及使用
- Activity-Window-View 三者的差别
- 如何优化自定义 View,你进行优化的一般方向是怎样的?
- 低版本 SDK 如何实现高版本 api?
- 描述一次网络请求的流程
- HttpUrlConnection 和 okhttp 关系
- Bitmap 对象的理解
- looper 架构
- ActivityThread,AMS,WMS 的工作原理
- 自定义 View 如何考虑机型适配
- AstncTask+HttpClient 与 AsyncHttpClient 有什么区别?
- LaunchMode 应用场景
- AsyncTask 如何使用?
- SpareArray 原理
- AndroidService 与 Activity 之间通信的几种方式
- IntentService 原理及作用是什么?
- 说说 Activity、Intent、Service 是什么关系
- ApplicationContext 和 ActivityContext 的区别
- SP 是进程同步的吗?有什么方法做到同步?
- 谈谈多线程在 Android 中的使用
- 进程和 Application 的生命周期
- 封装 View 的时候怎么知道 view 的大小
- RecycleView 原理,如何避免 RecycleView 带来的内存问题
- AndroidManifest 的作用与理解
常见的一些原理性问题
- Handler 机制和底层实现
- Handler、Thread 和 HandlerThread 的差别
- handler 发消息给子线程,looper 怎么启动?
- 关于 Handler,在任何地方 new Handler 都是什么线程下?
- ThreadLocal 原理,实现及如何保证 Local 属性?
- 请解释下在单线程模型中 Message、Handler、Message Queue、Looper 之间的关系
- 请描述一下 View 事件传递分发机制
- Touch 事件传递流程
- 事件分发中的 onTouch 和 onTouchEvent 有什么区别,又该如何使 用?
- View 和 ViewGroup 分别有哪些事件分发相关的回调方法
- View 刷新机制
- View 绘制流程
- 自定义控件原理
- 自定义 View 如何提供获取 View 属性的接口?
- Android 代码中实现 WAP 方式联网
- AsyncTask 机制
- AsyncTask 原理及不足
- 如何取消 AsyncTask?
- 为什么不能在子线程更新 UI?
- ANR 产生的原因是什么?
- ANR 定位和修正
- oom 是什么?
- 什么情况导致 oom?
- 有什么解决方法可以避免 OOM?
- oom 是否可以 try catch?为什么
- 内存泄漏是什么?
- 什么情况导致内存泄漏?
- 如何防止线程的内存泄漏?
- 内存泄露场的解决方法
- 内存泄漏和内存溢出区别?
- LruCache 默认缓存大小
- ContentProvider 的权限管理
- 如何通过广播拦截和 abort 一条短信?
- 广播是否可以请求网络?
- 广播引起 anr 的时间限制是多少?
- 计算一个 view 的嵌套层级
- Activity 栈
- Android 线程有没有上限?
- 线程池有没有上限?
- Android 为什么引入 Parcelable?
- 有没有尝试简化 Parcelable 的使用?
- dex 文件的加载流程能描述下么
「Android面试宝典」思维导图展示:
image总结
说一千道一万,不如自己去行动。要想在移动互联网的下半场让自己占有一席之地,那就得从现在开始进阶学习,从今天开始,马上严格要求自己,既重视业务实现能力,也重视基础和原理。
基础夯实好了,高楼才能够平地而起,稳如泰山。才能在面试中从容不迫,力压面试官。下次跟面试官吹牛可以这么说:三对明星同时出轨,我的程序也不会瘫痪。
①「Android面试宝典」PDF完整高清版+②「Android面试宝典」学习思维导图压缩包——————(此处免费打包领取),觉得有帮助、有需要的朋友可以点个赞