客户端秋招总结&技术路线分享

背景&基本情况

    本人双非本,上海211通信硕士,一段手机厂Android实习经历,lc大概刷了400题,拿得出手应该就只有国奖+2篇SCI。转码大概历时一年零2个月,虽然跟某些大佬相比,我不值得一提但我足够满意,当然未来也会保持继续努力,始终学习。经历了寒冷刺骨的2023秋招整个过程,从8月底开始陆陆续续投递了上百家公司,但能有笔试的可能只有一半,而笔试通过有面试的可能不到20家,可能是我投递比较晚了,也可能是笔试分不够出众,又或者是简历不够好,基本上没什么大厂的面试,目前是拿到了百度的offer以及一些中小公司的offer。但是在实习之前我其实一直学习的是Java后端,所以现在做的这一期分享谈不上成功之路,更多的是给想转客户端的同学一些参考,当然我说的也不一定对,读者看着取舍就行了哈。其实不建议盲目转客户端,这是因为客户端就业面要窄很多。前台可以是Android、ios、小程序、web甚至是鸿蒙,但后台需求量还是远大于前台,更何况在当今客户端的岗位会被前端的岗位蚕食掉一部分,就好比你去kfc你会专门为点餐而下载一个app吗,答案显然是否定的,当下人们都追求快节奏的生活;同时很多公司不愿意出成本招聘专门的原生开发工程师,技术栈会更偏向于以flutter为主的跨端开发;另一方面,银行国企对于客户端的需求更是少的可怜;客户端的学习成本完全不低于后端,从某种意义上来说,客户端毕业不进大厂即失业的说法也确实有道理,所以要真的要想明白了再转,往长远了考虑。那我自己之所以我选择在客户端逆行是因为确实在实习的时候接触到客户端让我产生了兴趣,比起后端抽象逻辑,对有人机交互的开发会更感兴趣。如果看到这里,读者还愿意看下去,相信也是真心想做客户端开发(本人水平有限,如果有什么错误,也欢迎指正)

客户端技术成长路线分享

  • 计算机网络、操作系统、计算机组成原理、数据结构与算法、数据库原理等计算机基础课:学习这些一方面是为了应付面试,就Android的面试,很多公司爱问http/https,tcp/udp,hashmap,linkedhashmap,用户态/核心态等八股;更重要的是,对Android开发及体系的全面理解,Android应用层建立在linux操作系统上,所以才有Java和C++分别去写应用层代码和系统层代码,而系统层代码会做一些系统调用,这就需要了解一些操作系统。
  • Java:由于笔者之前学习的是Java后端开发,所以Java基础还比较扎实,语言的学习一定是需要不断地实践思考的。在学习Java的同时也需要去搞懂Java中的多线程(包括各种锁和线程管理)、JVM、集合类实现原理,这部分一定需要去慢慢啃原理甚至源码。
  • kotlin:kt目前作为Google主推的Android开发语言,以其空安全、简便性和各种语法糖会更进一步受到Android开发工程师的喜爱,同时支持Java和kt相互调用。同样地,kt的学习也需要不断地去实践,写一些小demo,更重要的是去识别kt与Java之间的区别,以及kt所拥有的新特性(协程、扩展函数、更优秀的函数式编程、一些常用的关键字如by lazy、lateinit、apply、run、with、object等等)。总之,kt学习过程中一定是需要和Java去对比着来的。
  • Android基础 推荐Android第一行代码(尽量看最新的版本,用kt写的)
  1. Android四大组件(Activity、Service、ContentProvider、BroadcastReceiver)的使用;
  2. Activity的生命周期,Activity显式跳转和隐式跳转,各种操作的生命周期变化(包括横竖屏切换、Activity间跳转、Activity非正常销毁生命周期变化),Activity的LaunchMode;
  3. Android动画;
  4. Service两种启动方式及生命周期;
  5. 网络编程、SqlLite、SharedPreferences;
  6. Fragment管理,与Activity之间的通信;
  7. Intent、Bundle、Parcelable使用;
  8. 常见的控件和布局使用,ContraintLayout;
  9. 常见的UI框架如ViewPager、ViewPager2、ListView、GridView、RecyclerView的使用,ListView和RecyclerView的缓存机制,RecyclerView的LayoutManager自定义布局,ViewPager2原理。
  • Android进阶 推荐Android系统源代码情景分析

笔者认为学习Android Framework非常有必要,一方面对于整个Android体系的把握,另一方面做Android Framework可以往智能车载系统开发等方向走。笔者花了1-2个月的时间看了Android系统源代码情景分析,看完以后对我触动很大,也理解了Android体系工作过程,所以笔者还是非常推荐读者有时间的话都学习一下Framework的知识,只要你肯专研,其实也并没有想象中那么难。

  1. c++学习,学c++一方面是为了看懂系统源码,特别是binder基本上是用c++写的;另一方面NDK相关开发用的就是c++;
  2. Android Framework,包括handler(Android线程间通信、Android应用层心脏)、Binder(Android 进程间通信、Android系统层心脏)、AMS、PMS、WMS工作原理;
  3. Android 启动流程(包括系统开机流程、应用启动),Launcher工作原理,zygote工作原理;
  4. 自定义View,View绘制(ViewRootImpl中三大绘制整个过程),滑动冲突;
  5. Hook,动态代理;
  6. AIDL使用和原理(其实本质上还是用的Binder),Messager使用和原理;
  7. Android启动优化,Android应用整个启动流程和可以优化的点(1、业务,2、线程处理耗时任务,3、线程池管理,4、界面渲染,5、避免启动卡顿,6、闪屏),还有一些启动优化常用的工具如systrace;
  8. Android卡顿优化,卡顿产生的原因,卡顿的检测;
  9. Android内存优化,内存泄漏产生的原因和检测,内存溢出产生的原因和检测,LeakCanary原理;
  10. 构建原理(gradle、groovy),Dalvik虚拟机和dex文件;
  11. ANR原理和解决手段;
  12. 开源库使用和源码,okhttp、retrofit、livedata、databinding、rxjava、glide等,glide缓存机制和内存优化;
  13. MVC、MVP、MVVM使用;
  14. Android开发架构,组件化、模块化;
  15. 黑科技:插件化、热部署(笔者也还在学);
  • 混合开发

这一块笔者还没有深入研究,但是大方向还是比较明确的。

Flutter(dart语言学习、flutter原理);

WebView、RN(js)

  • 设计模式 推荐HeadFist设计模式

笔者过去看系统源码的时候总能碰上怎么也想不通也看不懂的一块代码,其实究其本质是因为其中的设计模式不够了解。同时,掌握设计模式可以写出一手惊为天人的代码,至少不会在code review的时候挨批 (别问我怎么知道)。安卓中常用的有单例、适配器、工厂、责任链、建造者、观察者、装饰器等。

关于未来

目前的话是签了百度,希望还是能学习到一些东西,同时也会不断地打磨自己的技术。后面的话可能还是会往大前端/framework开发的方向转,很多公司都采用大前端的组织架构,这也避免了未来跳槽会遇上岗位少的尴尬;另外framework开发的话可以去一些手机厂或智能车载公司做一些系统级开发。仅以此记录整个寒冬般的秋招,整个9-10月都感受到了如同西伯利亚的冷风,后面应该不会再面了。最后希望我的贴子对你有用,也希望能看到这里的你能拿到满意的offer。

小插曲

放一张9-10月的安排

#秋招##Android##Java##我的秋招记录##你的秋招进展怎么样了#
全部评论
说的很好,尤其是客户端hc定位这块
1 回复 分享
发布于 2024-02-01 21:06 甘肃
同学,可以看看我们公司,招聘软件测试和开发! 深圳市国资全资子公司,研发型企业,纯国资背景,薪资对标深圳大厂薪资。(无笔试,直接面试),感兴趣同学看我的主页帖子,可以私信我。 https://www.nowcoder.com/discuss/1085334
1 回复 分享
发布于 2022-11-10 10:03 广东
ramework这块 是怎么学的?
点赞 回复 分享
发布于 2024-05-30 23:09 河南
老哥 你这个日历是什么软件
点赞 回复 分享
发布于 2023-05-08 15:27 浙江
好厉害,感谢分享从进入大学就开始自学安卓,不知道暑假要不要实现一波,但是四大件还没学
点赞 回复 分享
发布于 2023-03-01 20:35 广东
强啊
点赞 回复 分享
发布于 2023-01-05 11:17 天津
好厉害👍🏻
点赞 回复 分享
发布于 2022-12-02 17:37 重庆
m
点赞 回复 分享
发布于 2022-11-16 15:41 湖南
感谢分享,当时投递太晚了,导致只拿了同花顺的客户端offer,心有不甘又没得选
点赞 回复 分享
发布于 2022-11-14 08:37 山东
感谢你的分享
点赞 回复 分享
发布于 2022-11-10 07:45 陕西

相关推荐

Lorn的意义:上周遇见一个一千五不包吃住,给我说招满了,让我转py
点赞 评论 收藏
分享
秋招拿了 7 个 offer,2 互联网(百度,bilibili) 4 制造业(拓竹科技、华为、小米、海康威视) 1 银行(招银科技),把开发这一块基本跑了一圈。简单把每家的面试内容和主观体验记一下,给后来人一点参考。本人 bg:双非本 211 硕,网络安全专业但没网安技术背景,技术栈点在了 C++/Java/Python 三幻神+后端上。暑期实习在 wxg 做客户端(mt 和 ld 很好,都是我的贵人)首先非常感谢 bilibili 和拓竹科技,让我感受到了真正的尊重,B 站的面试官非常友善,交流技术的时候还给我指明我项目上有哪些疏漏点需要补充,还给我推荐了很多有用的书籍和网站供我学习,整个三场技术面像是一场纯粹的技术交流和思想对撞,全程没有任何居高临下被俯视的感觉。拓竹科技的面试官也和 B 站差不多,非常好,两场技术面也是比较友善,重在挖掘我解决问题的能力而非扣一些似是而非的语法。此外这两家 hr 也非常平易近人,隔着屏幕都能感受到她们的诚意,此外百度也还好,展现了老牌大厂的技术底蕴,经典的一面问八股,二面问项目,三面问思维这样子。最后一面技术面,主管坐会议室中间看我展示项目 ppt,像极了我在给导师做答辩汇报 hhh 总的来说面试体验也是相当不错。再下来就是华为、小米、海康和招银科技,这些公司面试起来也是比较丝滑,基本都是两轮技术面+hr 面这样子,除了小米之外其他的基本都是线下面试,面试的难度基本上要比前三个低很多,华为、小米还是经典的每一轮手撕一个题目,海康和招银似乎更看重候选人的稳定性,毕竟制造业和银行确实需要真的热爱才能干下去吧 hhh(dddd)总结:个人评价自己水平说非常顶尖也算不上,但也是比较优秀的那一档。(真正大佬都是拿大厂 offer 打牌 hhh)我真正觉醒应该是今年年初,发觉在学校做横向实在没前途,市场上也不认这一套,在这样搞迟早要失业。然后寒假期间疯狂学八股、拿横向包装来改简历、投简历、找实习。不过感觉我命运的应该是投了腾讯的那一天,要不是那天手一抖点了投递,要不是那位腾讯面试官(后来我的 mt)愿意在一堆候选人里把我捞出来,我大概率是进不了顶尖大厂实习的。实习这段经历对我后面的秋招影响特别大,之前暑期投过但没动静的公司开始推进流程了,之前在 boss 上沟通后已读不回的现在也回了,总之就是命运的齿轮开始转动,秋招生活至此进入了简单模式。后面的秋招就凭着这个实习经历,不说杀遍天下无敌手吧,至少也是畅通无阻了。所以在这里作为过来人,告诫后面的学弟学妹能去实习就一定要去实习。在目前这个环境下,没有实习也不是完全没机会,但秋招难度会大幅上升,而且一轮轮被挂,对人的心气打击是真的很大,我身边就有例子,基础不差,但没有实习、没有像样的项目,一路被挂到怀疑人生,再去补基础、补项目,时间成本和心理成本都非常高。当然,严格意义上讲,今年秋招现在也还没彻底结束,还有补录、后补 HC、明年春招这些机会。只能说,越早觉醒、越早对准市场那一套去准备,才能越有资格把命运的主动权掌握在自己手里。
点赞 评论 收藏
分享
评论
28
99
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务