写点什么

一个自学 Android- 人的第三年的面经分享

用户头像
Android架构
关注
发布于: 16 小时前

我不建议大家只在面试前夕进行突击学习,背面试题,这种技巧可能会让你获得一个 offer,但没办法提升你的个人能力。我建议养成一个日常学习的习惯,每天抽空学几个小时,在面试前把总结的知识点重温一遍即可。这种习惯日复一日所带来的复利会让你的技术在某一刻由量变产生质变。


3.2 人不是神仙,不可能面面俱到


业内经常会调侃,面试造航母,工作拧螺丝。你不可能问什么都能答的上来,所以你要调整好心态坦然接受失败。不得不说准备面试真的是个很痛苦的事情,耗费精力不说,你可能突然会发现你原来这也不会,那也不懂,自以为拿手的本事被人两三下就问懵逼了,信心严重受挫。但你要相信自己,跌倒了不要紧,再爬起来就好。


关于面试具体要准备什么,聊这方面的文章很多,我简单梳理一下,后面也会有我部分公司面试题的总结。


①多线程、JVM


这两块的知识点是让你能顺利通过大厂一面的保证,我所经历过的阿里、头条面试一面基本围绕这些知识点展开。


②开源框架


我觉得多多少少需要看一些框架源码,了解其中的原理,掌握其中的核心,并且能用自己的语言,陈述出来。还有时下比较流行的东西面试官问的几率很高,比如组件化、hybrid。多读读源码也能培养自己读代码的能力,这样的本事能让你很快的了解一个新的项目或者一个新的框架。


③性能优化


这一块也是很多公司喜欢问的,特别是当部门架构组团队招人的时候喜欢问。我不太擅长这方面,就不多谈了。


④数据结构及算法


在我系统学习的过程中我是把数据结构和算法跟着课程学了一遍的,但是我面试期间是完全放弃复习算法的。这么说并不是说算法不重要,头条的面试上来就会考一道算法题,喜欢考算法的厂也越来越多。只是大家要根据自己的实际情况分配复习的比重。毕竟数学考试最后一道大题你做不来,你可以把前面的小题争取全部做对。


####四.简历


简历是敲门砖,也可能是面试的引线


大家一定要重视简历。对于学校不优秀,工作背景不突出的同学,简历是你的敲门砖。简历写的不好,你可能直接会错过一次展示自己的机会。


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


在面试中很多面试官会根据简历来提问,所以你擅长的东西,一定要写在突出的地方让面试官看到,主动引导面试官问你你擅长的问题。在回答问题的时候,千万不要只言片语草草结束。每次被提问,都是一次展示自己的机会。尽可能的说全,说详细。接着面试官可能围绕你说的内容进行深挖去考察你,所以你的知识点不能浮于表面,不然两三个回合可能就被问的哑口无言。如果你实在有些知识点不懂,尽量的在回答中规避这些细节,免得面试官一时兴起问你一下。


那么简历到底该怎么写,有些同学可能会觉得,我平时工作都在堆业务,项目上没有什么可以写的怎么办。首先再回头看一看项目里是不是真的没有什么闪光点,日活、品控、性能这些都能作为你的谈资。如果实在没有那就去研究两三个主流开源框架,读读 Android SDK 源码,写点开源项目放到 github 上。你也可以搞明白自己项目的业务架构,钻研一下组件化、热修复、插件化、hybrid 等热门技术,深究一下性能优化比如卡顿监测、APK 瘦身、DEX 加密、过渡绘制等。每一个点它都可能成为你成功的钥匙。


####五.面试题


生活是场修行,认真对待每场面试


这里写了部分大厂面试题作为大家复习的参考,平安系的面试主要问的项目,包括个别小厂面试没什么参考性,这里就不写了。


头条的面试质量很高,复盘的时候有种醍醐灌顶的感觉。


携程的面试很不走心,大老远跑一趟最后面试官都不给我提问的机会面完直接走出去了,我也没差到这种地步吧。


阿里的面试比较随机,两次下午上班的时候来电面试,一次是晚上来电面试。


5.1 东方财富


笔试


1.简述类加载机制 2.写三种单例的实现方式 3.Activity 生命周期一面


1.Handler 机制 2.事件分发机制 3.乐观锁与悲观锁二面


1.Android 7.0 8.0 p 兼容性问题 2.嵌套滑动 3.营销工具比如列表第三位展示广告,如何设计接口 5.2 蚂蚁金服


一面


1.内存泄漏具体场景 2.大图加载 2.1.大图加载的缓存 2.2.Bitmap 优化 3.Handler 机制 3.1.子线程能不能创建 Handler3.2.线程间通信其他方式 4.线程的创建与退出 4.1.乐观锁与悲观锁 4.2.volatile 原理 4.3.读写锁的应用 5.RecyclerView 与 ListView 的区别 5.1RecyclerView 为什么这么设计 5.2 应用 6.自定义控件 6.1.事件分发机制 6.2.动画 7.okhttp 支不支持优先级 7.1.ssl 握手谁实现的 7.2.websocket 应用 8.简述日志系统二面


1.介绍项目架构等,围绕项目进行提问 2.序列化的作用 3.子线程轮询阻塞队列如何安全回收线程 5.3Musical.ly(头条)


一面


算法:数组中的数据前半部分递增,后半部分递减,排序并去重


1.Java 虚拟机


1.1 虚拟机内存结构 1.1.1 哪些是线程私有,哪些线程公有 1.1.2 静态常量的存储位置 1.1.3 无穷递归方法引发的问题 1.2.GC 机制 1.2.1.GC roots 是什么 1.2.2.Handler 造成内存泄漏的整个引用链 1.3.什么情况会产生 ANR1.4 广播 1.4.1.onReceive 方法调用线程 1.4.2 静态广播接收流程 1.4.3 动态广播接收流程 1.4.4 动态广播能不能重复注册 1.5.SurfaceView 原理及使用注意事项 1.6.ButterKnife 工作原理 1.7.仿微信朋友圈图片展示设计思路------以下问题都是面试官根据简历问的------


2.热修复 2.1 热修复原理 2.2.假如某个类 A 有个 bug,热修复的整个流程 2.3 该修复方案是否能避免 oat 导致的一些问题 3.LeakCanary 原理 4.Groovy 插件 4.1.APK 瘦身如何实现的 4.2.自定义任务在某个任务之前或之后执行怎么写 4.3.Gradle 打包的整个过程 5.看过哪些 Android 源码拦截 Activity 跳转有哪些 Hook 点 6.Groovy 和 Java 的比较二面


1.类加载过程 1.1 触发类初始化的时机 1.2 被动引用 2.Activity 启动模式及几个模式的应用场景 3.onSavedInstanceState 相关 3.1 灭屏会不会触发 onSavedInstance3.2.onRestoreInstanceState 和 onSavedInstanceState 是否成对出现 4.Service 生命周期的理解 4.1bindService 整个代码怎么写 4.2.与 service 通信是否会阻塞当前线程 4.3 如果是耗时方法,为什么会阻塞 4.4 如果不是耗时方法,为什么不会阻塞 4.5 如果远端是耗时操作,怎么不等待结果让主线程先运行 4.6.startService 和 bindSerivce 对 service 生命周期的影响 4.7.aidl 传递 Bitmap 需要注意的事项 5.4 携程


一面


1.EventBus 原理 2.Java 中有哪几种注解 2.1 具体注解名称 2.2 如何自定义注解 3.EventBus 是什么注解 3.1 能不能用编译时注解实现 EventBus3.2 注解处理器怎么工作 3.3 注解处理器有哪些 API4.Glide 原理 5.Lrucache 原理 6.LinkedHashpMap 原理 7.HashMap 原理 7.1 解决 Hash 冲突的方法 7.2.equals 和 hashcode 作用 7.3.hashcode 如何实现 8.Object 类下有什么方法 9.使用过哪些热修复 9.1 热启动热修复原理 9.2 冷启动热修复原理 10.Android 中的类加载器 10.1 类加载器之间的区别 10.2Dex 融合用的哪种类加载器 10.3 父类是什么及三者之间的关系 11.双亲委派模型

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
一个自学Android-人的第三年的面经分享