安卓客户端的学习路线|26春招冲大厂

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

个人介绍

bg双非硕,去年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渲染。

1.安卓基础

  • Java语言

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

  • Android开发基础

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

  • kotlin基础

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

2.开源第三方库

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

3.开发框架

  • Jetpack框架:对传统的安卓开发提供了更方便的组件,提升开发效率。

  • Jetpack Compose框架:一种声明式UI的框架,摒弃了传统的xml布局文件先声明view,然后再在代码中通过 findViewById(R.id.XXX)获取之后,再对view进行各种操作。

  • 跨端框架:简单的说就是使用同一种语言开发APP,可以在安卓/IOS/鸿蒙,三大主流手机系统上运行。这个得看你去的公司需求,如果该公司用Flutter,那么你就需要去学。如果用RN,那么也要去学。这些学有余力的话,都是可以学学的,加深对跨端的理解。跨端在未来,以及ai加持的情况下,肯定是一个大趋势。

4.安卓进阶

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

📖八股文

计算机网络和操作系统:这个可以看看 小林coding,整理的很详细。

Java基础:一些语言基础,juc多线程、jvm虚拟机、java集合,这个可以看看 javaguide

android安卓基础:这里主要是 安卓四大组件(Activity、Service、Content Provider、Broadcast Receiver),还有就是 handler线程通信,view绘制过程,自定义view等等。

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

💻APP项目

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

也可以去 github 搜索优质项目,以 玩安卓APP为例。https://github.com/hongyangAndroid/wanandroid

🍃算法

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

分享一个 codetop刷题网站,可以重点关注 前5页 的高频题。

❓面经举例

腾讯 一面:

  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. 如何判断一个对象是垃圾对象?
  39. 反问 手撕算法:最长递增子序列

滴滴 Aiot 一面:

  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##后端##秋招开始捡漏了吗##春招##秋招#

全部评论

相关推荐

写在前头...bg:社招双非本2.5年。本来是想先投一些小公司试水的,但是小公司都不给面试机会,无奈只能投一些大点的公司,其中包含某度、某滴等。基本上约的每天夜晚面试,真的累趴下了....后面都无所谓了,一点不想面了几家社招面试流程大致如下:1、自我介绍2、介绍一个项目。说一下项目的亮点、难点、遇到的问题以及怎么解决的3、项目优化,优化,在优化;这样会有什么问题?为什么不考虑其他方案。4、针对项目中设计一些场景,让你设计;针对项目中用到的技术,问八股。5、其他场景设计。6、技能中的八股;非简历中八股7、手撕算法(一般都不难,)11.10   周一   某制造业公司   二面:1、自我介绍2、找一个你认为你参与度比较多的项目,有那难点,有亮点的项目讲一下。3、项目中用到的技术的八股4、场景设计5、八股6、算法题(口述说思路)11.11 周二  某消金公司  一面:1、自我介绍2、项目聊的很多。3、几个场景设计。说我设计只考虑实现,不考虑可重用、可用性等。11.12   周三  某大厂A    一面:推迟11.13   周四 某大厂B   一面:1、自我介绍2、围绕项目3、八股4、算法(刚开始没理解题目,后面面试官又给我说了很多,写出来了)11.17   周一   某大厂A   一面:1、自我介绍2、项目相关3、八股相关。都是简单题,经常用到的,但是说不出来(自己菜)。从概念,到使用,在到底层原理。我在概念那都卡主了4、算法最后总结:算法:算法题来源不同,但是一般都不难。按照网上刷题就好了项目:这个需要提前准备了,不然和面试官聊不下去1、项目介绍2、项目亮点、难点、解决方案3、项目用到的技术八股(感觉面试都会考项目中技术的八股)场景设计:这个感觉只能多看了,也没什么好的思路。主要还是先理解场景吧八股:面试的时候感觉脑子空白,八股全忘记了。先总结到这吧...
查看13道真题和解析
点赞 评论 收藏
分享
评论
3
8
分享

创作者周榜

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