三年 Android 开发的技术人生,浅谈自身面试的感悟
成长的个人背景
2017 年普通本科毕业,今年,考上了湘潭大学非全日制的研究生,预计 2021 年底拿证。
毕业时,好不容易在上家公司去年开始实习并转正,担任 Android 端独立开发,当然做的事也比较多。成长的三年当过一些小项目的负责人,也调研一些业界常见的方案,比如双因子登录,直播全流程,开发人力成本模型等等。
抬头看天
其实在老东家(项目型公司)呆了一年后,也开始逐渐规划一些方向,比如未来 3 年要达到的高度。于是,我本次的目标是:
Toc、产品和有技术深度的公司
[](
https://blog.csdn.net/u012165769/article/details/116309614)低头看地
学历和算法
前者很伤,因为只是普通本科的学历,再加上我自身明白自己对技术深入的不足,需要渡过很长阶段的提升期(反向证明我是个菜瓜),所以短时间我肯定不考虑互联网大厂的面试。(除非拿到了研究生的证,当然这也只是提高了面试成功的几率,自带 B 数勿喷)
后者也挺伤,不过现阶段的 Android 面试,基础算法应该问题不大(后面被打脸了),不过也得花点时间再刷题;
目前相比其他同阶段开发者优势劣势在哪里,相比 2-3 年经验的开发者呢,有什么闪光点可以使我超越这帮人呢?
1-5 年中小公司常见题(个人——部分总结)
面试官主要还是根据你简历去问,以下主要做一个简单的部分总结。**不过这些年我把我自己面试过的题目都汇总成了 Android 知识点,需要面试、阅读的朋友可以去我的 Github地址:https://github.com/733gh/Android-T3 访问阅读。
java
gc 回收机制
多线程,synchronized 与 volatile
类加载相关
hashmap 原理,arraylist 等等
java 内存区域
静态代理与动态代理区别
Android
性能优化,内存泄漏治理,启动优化,包体积优化
四大组件(不涉及原理),是的,依然有公司问,基础很简单,重要是细节
进程间通信方式,及部分原理
事件分发机制与事件冲突处理
热修复与相应第三方实现原理(如 tinker)
handler
view 流程(涉及相应方法内部源码)
Activity,windows,view 关系
组件化与模块化
三方库
Retrofit 与 Okhttp
Glide
JetPack
lifecycle- 原理及为什么要存在它的背景
ViewModel 与 LiveData
Kotlin
协程与其他第三方线程框架区别
kotlin 和 java 你认为的不同
相应的内联函数解释一下
网络协议
tcp/ip,http
签名与证书
设计模式
单例
代理
其他的基本遇到的很少,不过设计模式,日常用的东西
算法类
二分
快排
二叉树
链表
常青藤爸爸-卒
电面
聊做过的项目
为什么要辞职
为什么要选用组件化
讲一下 JetPack 部分组件内部实现原理
…
二面
个人简介
聊项目组件化,画一下你的框架图,讲一下具体注意事项
说说 MVP 和 MVVM
手写 算法-二分查找
原因: 二分查找没写出来,对你没有看错,真的给没写出来,当场差点给老弟哭了。
MetaApp-卒
笔试题
大数相加。(禁止使用 bigxxx,String 长度可能超过 long)
两个 String 字符串除重,确保顺序不变
上述的解法,算法复杂度是多少,有没有达到 O(n),没有请实现一个?
原因:大数相加写的很失败。
老弟算法差到离谱,于是痛定沉思,刷刷算法题,真的是丢人,排序算法,二叉树等等。
新氧科技-卒
一面
聊项目
聊组件化,为什么要用组件化,背景,组件到的依赖问题
聊聊 JetPack
项目中用过哪些性能优化说一下?
说一下你是如何做包大小治理的
说一下你的性能优化具体做了啥?
说说 SparseArray 和 HashMap 区别,内部实现?
说说为什么 CoordLayout 为啥比 RelayoutLayout 效率高,内部实现?
当 LinearLayout 和 CoordLayout 相同情况下,优先使用谁,为什么?
…
二面
聊聊你在上家公司做了什么
聊聊你为什么要辞职
聊聊你的项目
说一下你知道的基本数据结构
说一下常见排序算法
说一下快速排序的原理
你还有什么想问的吗
原因:技术 VP 觉得工作年限不足,可能是安慰吧。
未来花朵-婉拒
一面
讲讲你的项目
说一下你是如何做包大小治理的
讲一下你对 Handler 的理解
讲一下 view 绘制流程
二面
讲讲你再上家公司干了什么
讲讲你为什么要辞职
聊聊你的项目
对直播一些问题的解释
讲讲 kotlin 和协程
原因:是一家创业的小公司,在二面中发现面试官技术深度欠缺,与我职业规划有点差异。
7k7k-婉拒
一面
讲讲 Android 四大组件
说一下编译版本,最低版本,最高版本的区别
说一下 Android 各版本差异
说一下服务
…
二面
Java 基础考察主要
Java 多线程相关
两个栈实现队列
二叉树的遍历方式
一个 8 个石头,一个天平称重,其中一个石头较重,求最快几步(穷举)
原因:面试得还不错,同样,这家也是独立开发,他们的擅长是做游戏,于是婉言谢辞。
彬彬有礼-卒
一面
讲讲你负责的项目
说说 Android 事件分发机制,及 dispatchEvent 方法内部做了什么?
说一下 Retrofit,和 Okhttp 的区别
说一下 glide 如何加载指定个数此 gif 图
说一下内存泄漏常见的场景,及你如何处理一般
二面
讲讲为什么要离职
说一下 Flutter?
你都了解哪些设计模式,讲一下
。。。
原因:应该是音视频不怎么了解导致,这家需要音视频比较了解的小伙伴。
老弟对 JVM 基础了解还差点,简单点来说,背的不熟练,比如 Java 内存区域这些基础东西,需要看看。
一下科技-卒(hc 满了)
一面
讲一下热修复的原理
说一下 Java 的内存模型及 Gc 的回收机制
谈一下你项目中用到的 IM
简述一下 一个流式布局整体的写法,比如 onMeasure 和 onLayout 中做了什么
说一下 xml 中的布局如何转化为代码
说一下 ArrayList 和 LinkeList 区别及实现原理
说一下换肤的原理,讲一下如何动态配置换肤的资源包
说一下你做过的内存优化有哪些?
说一下包大小治理方面你做了什么?
…
二面
说一下你认为的组件化与模块化的不同?
说一下 TCP 三次握手
除了 Retrofit,还用过其他网络框架吗,说一下区别
看过 OkHttp 源码吗,说一下原理
讲一下你对 Handler 的理解,不要涉及源码
说一下音视频相关的,比如直播的流程
说一下你了解的设计模式
…
三面(Hr)
说一下你为什么要离职
谈谈一些想法
以一个非技术角度给我讲一下冒泡排序
说一下 TCP 三次握手的原因是什么?
说一下你对二叉树掌握多少
说一下常用的排序算法及复杂度和原理
四面(交叉面)电面
谈谈你做过的项目
说一下你做过的性能优化有哪些
…
你还有什么要问的吗
原因:1,2 面聊得都不错,能看出来技术深度不错,3 面 Hr 一上来就问三次握手,老弟有点吃惊,看得出来这个 HR 有点意思。总体氛围也不错,4 面结束,面试官说成了,等人事电话,最后等来了 HC 满了,也就意思是你被当备胎了。
壳壳互联-卒
一面
稀奇古怪聊了很多
如果让你采用 Linux 开发,你会同意吗?
最后选答题-app 随机拿的:
知乎 App 的会员页设计你会考虑什么,都有哪些 view,需要注意什么?
知乎 App 的我的-上半部分卡片栏你会如何设计?
如果让你设计一款知乎 App,它的架构你如何选择?
上述问题有 10,15,20 分钟,选择一个开始作答。
选了 3,组件化结构,最后结合知乎画了一个粗略的框架图
评论