安卓客户端的学习路线 | 26春招冲大厂(适合Java后端转客户端,零基础也有机会,曲线救国)

ps:如果这篇帖子不仅仅适用于26春招,对其他想找实习的27、28届小伙伴,也是有所帮助的~想转行客户端的可以关注我,给本贴点赞、评论、收藏。

介绍

背景双非硕,去年25秋招只投递了java后端,到了11月份时候也只拿到了一些小公司的offer,后来也是在逛各种帖子:是11月份继续准备再找一个java实习 or 选择一个新的岗位(测开or客户端)。我仔细考虑了一会儿,毕竟后端太卷了,再来一段实习可能作用也不是很大,所以选择了后者。然后我在ssob上面投了一些公司,比较顺利地拿了快手客户端,开始春招转投了。

如愿在春招收到了许多大厂客户端面试机会,基本都面到了终面,比java后端的面试机会,真的多了很多,稍微罗列一些,主要如下:

春招拿下的offer腾讯、转转、360、哈啰、几个中厂(也能开20多个)。

🕐首要目标:如果自己的学历也是双非硕比较普通的学历(不是那种邮电、深大、杭电这种的话),还想冲一手大厂,那么可以考虑从现在开始,抓紧去ssob上筛选客户端的实习岗位,如果是java后端的,就投递安卓android客户端。现在快年底了,应该是比较缺人力的。有了客户端的大厂实习经历之后,春招上岸成功率是比较大的。

🔨安卓技术栈

这里先讲一个大致的安卓技术栈思路,因为我们都是学过java后端的,那么SSM、SpringBoot框架,MySQL数据库,以及一些中间件(Redis、mq、es),都是学过的。但是到了安卓这边,这些中间件都不需要再使用了,因为我们主要是和界面UI打交道,然后有点像web前端,发送HTTP请求给后端,获取数据,进行UI渲染。

基础技术栈

Java语言

因为谷歌一开始推出安卓Android的时候,就是基于java语言设计的,所以掌握它比较重要。我觉得如果是java后端出身,那么上手安卓应该不是很困难。虽然现在很多大厂都是采用跨端技术(Flutter、RN、字节lynx、腾讯kuikly),但是有些业务实现,都是基于原生安卓的,那么就绕不过java。这里附上一个我看过的入门视频:

java基础入门视频

Android开发

有了java基础,可以先去看看一本书《第一行代码——Android第二版,是郭霖大佬写的,十分的通俗易懂。可以把书里面的源码下载下来,对着安卓的四大组件:Activity、Service、Content Provider、Broadcast Receiver,逐个敲代码去理解。其实日常开发中,更多的就是 acitivity活动比较重要,你可以把它想象成一个容器,app的UI界面都是以它为核心,堆叠一些各种视图view。这里附上一个我看过的入门视频:

安卓开发视频

kotlin基础

当前面2大块都掌握得差不多了,kotlin语言就是学有余力的可以看看。因为在2017年之后,谷歌就首选kotlin作为安卓的第一开发语言。不过为了准备面试的话,这个可以先放放,进公司再学也行,就是换了一些更简洁的语法糖而已。可以和java互相调用,都是通的。

kotlin入门基础

开源第三方库

  • Glide 图片库
  • Okhttp + Retrofit 网络请求库
  • RxJava
  • EventBus

开发框架

  • Jetpack框架:对传统的安卓开发提供了更方便的组件,提升开发效率。jetpack快速开发
  • Jetpack Compose框架:一种声明式UI的框架,摒弃了传统的xml布局文件先声明view,然后再在代码中通过 findViewById(R.id.XXX)获取之后,再对view进行各种操作。jetpack compose教程
  • 跨端框架:简单的说就是使用同一种语言开发APP,可以在安卓/IOS/鸿蒙,三大主流手机系统上运行。这个得看你去的公司需求,如果该公司用Flutter,那么你就需要去学。如果用RN,那么也要去学。这些学有余力的话,都是可以学学的,加深对跨端的理解。跨端在未来,以及ai加持的情况下,肯定是一个大趋势。

安卓进阶

  • 自定义view
  • 组件化开发
  • 性能优化
  • framework

📖八股文

  • 计算机网络操作系统:这个可以看看 小林coding,讲的很详细。
  • Java基础:一些语言基础,juc多线程、jvm虚拟机、java集合,这个可以看看 javaguide
  • android安卓基础:这里主要是 安卓四大组件(Activity、Service、Content Provider、Broadcast Receiver),还有就是 handler线程通信,view绘制过程,自定义view等等。

⚠️⚠️⚠️注意:如果是java后端转过来的,那么不需要再背 MySQL、Spring、SpringBoot、SpringCloud等等框架,面试官不是很了解这些,重点背 android安卓基础 就行。

💻APP项目

这里不做过多的介绍,b站上的安卓项目可以随意选一个看看都行。

或者 可以去github搜索优质的项目,以 玩安卓为例。https://github.com/fangxiaogang/WanAndroidxg

🍃算法

主要就是力扣hot100,每天刷,保持手感。

然后就是一个网站,每天都会更新手撕算法在各个大厂面试中被问到的频率,可以重点关注前5页的高频算法题。codetop刷题网站

面经举例

腾讯一面:

  1. 自我介绍
  2. 我看你有一段Java后端实习,为什么想投递安卓开发的?
  3. 你在学安卓的时候,是通过什么方式来学习的?
  4. 你挑一些在快手工作中,认为最难、有深度或有成就感的需求来讲讲?
  5. 具体是怎么破解抖音网络抓包证书校验问题的?
  6. 网络上加密防止别人抓包有哪些方式?
  7. 什么叫做HTTPS?它比HTTP安全在哪?
  8. 公钥和私钥的区别是什么(在非对称加密中)?
  9. 加签和验签是什么过程?
  10. 加密解密、加签和验签分别保证了什么事情?
  11. Java并发的三大原则是什么?
  12. 原子性除了用synchronized关键字,还有什么方式可以保证?
  13. 可见性可以通过什么来保证?
  14. 有序性可以通过什么来保证?
  15. 什么情况下会发生Java的指令重排?
  16. JUC包下你知道哪些常用的类?
  17. CyclicBarrier(屏障栅栏)是干嘛的?
  18. ConcurrentHashMap底层是怎么保证线程安全的?
  19. Segment是怎么锁住ConcurrentHashMap的?
  20. Java和Kotlin的主要区别是什么?
  21. Kotlin语法中有哪些特性?
  22. 什么叫做高阶函数?
  23. 什么叫做密封类?
  24. 重写hashCode和equals方法的作用是什么?什么情况下需要重写?
  25. hashCode相同,equals一定相同吗?反过来equals相同,hashCode一定相同吗?
  26. HashMap底层比较两个对象时,是先调用hashCode还是equals?
  27. HashMap存储对象时,如何判断两个对象是否重复?
  28. 安卓中四大组件是什么?
  29. Activity和Fragment的区别是什么?
  30. Activity和Fragment的关系是一对一还是一对多?
  31. 两个Fragment之间如何传数据?
  32. Handler了解吗?
  33. 一个子线程有几个Looper、几个MessageQueue、几个Message?
  34. 什么叫做同步消息?什么叫做异步消息?
  35. 安卓中内存泄漏有哪些常见的场景?
  36. 非静态内部类和静态内部类的区别?
  37. Java的GC垃圾回收算法有哪些?
  38. 如何判断一个对象是垃圾对象? 手撕算法:最长递增子序列

滴滴一面

  1. 自我介绍
  2. 讲一下你的实习经历
  3. 你在快手这段实习,你觉得最难搞的一个事情,或者对你帮助最大的是什么?
  4. 安卓的编译流程,你有了解过吗?
  5. 一个 APP 从手机屏幕上点开,它大致的一个运行过程吗?比如说从进程启动到界面起来这种。
  6. 你平时有了解过、看过安卓的源码吗?或者第三方开源框架的源码?
  7. 你知道 Looper 为什么不会导致 ANR 吗?
  8. Glide 根据设备内存动态调整缓存,它是怎么实现的,底层原理?
  9. 你是怎么学习安卓的?
  10. 你简历里写到跨境进程通信(AIDL),能大概给我讲下原理吗?
  11. 你平时有去写过一些后台 Service 吗?比如后台播放服务这种?
  12. 一个后台进程,现在安卓对后台管控严格,如何能保证它不被杀掉?
  13. 讲一下 View 的绘制过程?
  14. 屏幕上有个按钮,点击按钮的事件分发机制,能讲一下过程吗?
  15. 你平时除了公司项目,会自己学一些 demo 或者做过自定义 View 相关的经验吗?
  16. 你在MyNews这个app中,当时为什么选择 MVP 架构?有了解过 MVVM 这种架构吗?
  17. 首页的导航项、新闻推荐讲讲怎么实现的?
  18. 你平时有了解 Flutter 等等跨端开发这块吗?
  19. 反问

🙌学习资料分享

如果大家有需要的话,没时间自己整理安卓客户端八股文的话,可以私信我。我自己在语雀整理了一份客户端面试宝典,里面有详细的八股文、面经合集、面经录音。

也可以帮忙改简历,周末和平时下班,有时间都会回复。

#大厂##26校招##26春招##实习##客户端##android##经验贴##校招##Java##后端##秋招开始捡漏了吗##春招##秋招#

全部评论
本人完全一样的背景,学院本双非硕,在考虑是学前端还是客户端(不敢染指算法和后端),佬能请教两个问题吗。 1.如今客户端劝退严重,你的看法是什么 2.all in前端还是客户端呢,学前端的话,后面好面客户端吗
点赞 回复 分享
发布于 昨天 23:00 湖北

相关推荐

包行:平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞 评论 收藏
分享
评论
2
7
分享

创作者周榜

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