小公司Android开发4年,如今终于熬出头了!费时8个月,入职阿里涨薪14K

91 篇文章 0 订阅

你的努力,终将成就无可替代的自己

本科毕业后就一直从事Android开发的工作,和多数人一样,最开始从事crud的工作,我朋友看着自己的同学一步一步往上走,自己还是在原地踏步,说实话这不是自己想要的状态。

一年半后开始沪漂生活,又摸爬滚打了一年半,薪资基本上在16K。然后开始边上班边复习准备面试,目的就是为了进大厂,得到更多的学习机会,也是为了自己到所谓的“35岁”之后,也能在老家恰一口好饭。

努力也没有白费,8个月时间的零散学习成功上岸Alibaba,直接涨薪14K,下面分享一下朋友的学习指南,面试真题以及个人心得体会。

一面

1.JVM类加载机制了解吗,类什么时候会被加载?类加载的过程具体生命周期是怎样的?
2.Handler内存泄漏的GCRoot是什么?
3.动画里面用到了什么设计模式?
4.OkHttp里面用到了什么设计模式?
5.OkHttp连接池是怎么实现的?里面怎么处理SSL?
6.泛型为什么要擦除?kotlin的泛型了解吗?泛型的pecs原则
7.同步屏障
8.性能优化做过什么工作?
9.RecyclerView的缓存结构是怎样的?缓存的是什么?cachedView会执行onBindView吗?
10.RecyclerView嵌套RecyclerView,NestScrollView嵌套ScrollView滑动冲突
11.ViewGroup在Action_Move时onIntercept返回true,事件怎么传递
12.Launcher启动图标,有几个进程?
13.JMM可见性,原子性,有序性,synchronized可以保证什么?
14.源码中有哪里用到了AtomicInt
15.AQS了解吗?
16.Activity内LinearLayout红色wrap_content,包含View绿色wrap_content,求界面颜色
17.ViewModel的使用中有什么坑?
18.有用DSL,anko写过布局吗?
19.HashMap查找的时间复杂度是多少?
20.阿里编程规范不建议使用线程池,为什么?
21.四种线程池原理?
22.了解哪些算法?
23.IdleHandler用过吗?

二面

1.如何封装一个字符串转数字的工具类
2.如何求当前Activity View的深度
3.多进程怎么实现?如果启动一个多进程APP,会有几个进程运行?
4.反射可以反射final修饰的字段吗?
5.Activity与AppCompactActivity区别,Activity会打包到包里面去吗?
6.如何让两个线程循环交替打印
7.怎么中止一个线程,Thread.Interupt一定有效吗?
8.动画连续调用的原理是什么?
9.做过一些SDK的操作吗?
10.协程可以在Java项目中使用吗?
11.SharedPreference原理?读取xml是在哪个线程?
12.了解APK打包的过程吗?
13.class文件的组成?常量池里面有什么内容?
14.自动装箱发生在什么时候?编译期还是运行期
15.bugly日志收集的原理是什么?
16.启动优化做过什么工作?如果首页就要用到的初始化?
17.DataBinding原理

三面

1.插件化的原理是什么?有没有什么非运行时插件化的解决方案?
2.ARouter的原理是怎样的?注解处理器是处理java还是字节码
3.java和字节码有什么区别?
4.kotlin空安全的原理是什么?
5.性能优化做过什么工作?有用过什么工具?有没有精确测量的工具?
6.kotlinc与javac编译字节码有什么区别?
7.你在团队中是怎样一个角色?
8.你有没有做什么推进项目的工作
9.说说热修复的原理?

学习计划

以人为镜可以明得失, 看到了自己的不足就要针对性地做一些改变.

以下思路转变要切记:

  • 核心思想, 从项目出发, 打牢基础, 逐步深入, 业务看到哪, 源码就要跟到哪, 不要拖, 不要欠;
  • 上班期间不再惦记其他知识的学习, 专心研究项目上需要的知识/碰见的问题, 否则只会三心二意, 项目上的技术点做不深入, 其他知识点也看不踏实;
  • 下班后, 除了陪家人朋友/做家务之外的个人时间, 要抽出大半来学习, 比如没其他事的话可以玩游戏/逛吃的时间, 这个比较笼统, 没有具体衡量标准, 所以要时刻提醒自己;
  • 学习时切忌不要急于求成, 以深入学习/学会应用为目标, 写博客是为了总结记录, 而不是为了花里胡哨的标榜什么. 比如写了一个算法, 尽量联系下应用场景; 看了一段源码, 想一下对应用层调用有什么影响, 这样才能学以致用.

具体的学习目标

  • 周一到周五晚上只有一个半小时的小段时间, 用来学习小节点的算法知识, 周末大段的时间用于研究源码或者JVM等较深入的知识, 周六周天相加至少要6小时, 其余时间与媳妇商量来定;
  • 算法知识先看完<剑指offer>, 然后刷LeetCode; 源码和JVM先看<Android源码设计模式解析与实战>, 然后系统地看下<深入理解Java虚拟机>, 把之前掌握的知识梳理好, 这三本书是今年的目标.


    这是一个非常全面的学习路线,图片太大无法展示完整,需要的朋友滑到文末获取。

总结:心得体会

既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。

学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。

面试大厂,最基本的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。

在这里为大家整合出了这份《2021年最新Android中高进阶面试圣经》,希望可以给到各位Android开发者更多的帮助与收获。

第一章 Android 高频面试之必考Java基础

1,面向对象和面向过程的区别
2,面向对象的特征有哪些
3,解释下Java的编译与解释并存的现象
4,简单介绍下JVM的内存模型
5,简单介绍下Java的类加载器
6,谈一下Java的垃圾回收,以及常用的垃圾回收算法。
7,成员变量和局部变量的区别
8,Java 中的方法重写(Overriding)和方法重载(Overload)的含义
9,简单介绍下传递和引用传递
10,为什么重写 equals 时必须重写 hashCode 方法

11,接口和抽象类的区别和相同点是什么
12,简述下HashMap
13, CurrentHashMap
14,介绍下什么是乐观锁、悲观锁
15,谈谈对Java线程的理解
16, Synchronized、volatile、Lock并发
17,锁
18,谈谈你对Java 反射的理解
19, 注解
20,单例

第二章 Android 面试之必问Android基础

1,Activity:生命周期、启动模式、启动流程
2,Fragment:生命周期、与Activity传递数据
3, Service:启动方式、生命周期、Service不被杀死
4, BroadcastReceiver
5, ContentProvider

6,Android View知识点:测量流程、事件分发、MotionEvent、Draw 绘制流程等等
7,Android进程:进程生命周期、多进程、多进程通信方式
8,序列化
9,Window
10,消息机制:Handler 机制、工作原理
11, RecyclerView优化:卡顿场景、其他优化策略

第三章 Android 面试之必问高级知识点

1,编译模式:AOT优点、垃圾回收
2,类加载器:类加载器分类、双亲委托模式、Android的类加载器
3,Android Hook
4,代码混淆:Proguard、混淆规则、混淆模版
5,NDK:JNI基础、NDK开发基本流程、CMake 构建 NDK
6,动态加载:插件化、热修复

第四章 Android 面试之必问性能优化

1,启动优化:冷启动/热启动和温启动的优化、代码方面的优化
2,UI渲染优化:CPU/GPU、过度绘制、解决自定义View的OverDraw、Hierarchy Viewer
3,内存优化:内存管理、内存泄漏、大图内存优化、线上监控
4,网络优化
5,耗电优化:优化方向、耗电监控、如何监控耗电
6,安装包优化:常用的优化策略、资源压缩、资源动态加载

第五章 Android 面试之开源库分析

1,HTTP与缓存理论:HTTP缓存策略、强制缓存、对比缓存
2,OKHttp:OKHttp请求流程、OKHttpClient、同步请求、异步请求、CacheInterceptor网络请求缓存处理
3,Retrofit
4,Glide
6,EventBus

第六章 算法面试题汇总

6.1 排序
6.2 二叉树
6.3 链表
6.4 栈 / 队列
6.5 二分搜索
6.6 哈希表
6.7 堆 / 优先队列
6.8 二叉搜索树
6.9 数组 / 双指针
6.10 贪心
6.11 字符串处理
6.12 动态规划
6.13 矩阵
6.14 二进制 / 位运算
6.15 其他:两个大文件中找出共同记录、ip地址与int类型的转换、整数反转、LRU缓存策略

如果你需要这份完整版的面试笔记,赶紧扫一扫下面二维码【免费】领取吧!!!

最后

最后想要告诉读者的是:影响面试结果的因素有非常多,如面试官心情、口味,当天自己的状态,岗位要求等等。我有两个朋友,都是前面连续挂了两次一面,但后面也都成功拿到了BAT offer,甚至不止一个。挂掉面试绝对不是简单的自己能力不行,而是多方面的因素,总结好经验,继续面试就好了。

迈出第一步,开启第一轮面试非常重要。不要觉得自己“好菜啊,投了肯定不过的,不投了”。不投,怎么知道不过呢?面试也是一个学习的过程,会慢慢发现自己的不足,包括表达、知识等等。所以,如果你还在犹豫,赶紧投起来吧。

希望这篇文章能够给正在找工作的读者提供一点帮助,先预祝各位面试顺利吧。有什么问题或者想了解的内容可以评论区交流。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值