2024面试字节跳动看这篇就够了!安卓程序员的面试经历及其感悟!(1)

26)客户端设计一个网络库,需要考虑哪些问题;

29)Java中如何判断一个对象是否存活,有哪些GC Root根节点;

30)Java中异常体系;

31)什么时候出现内存溢出、用过什么内存泄漏的工具;

  • 二面

1)熟悉那些设计模式呢?

2)动态代理底层是如何实现的?

3)讲讲Retrofit的动态代理吧

4)能简单说说JVM内存模型的目的以及在内存中区分为哪些区域吗?

5)内存回收机制大致讲讲呗?

6)类加载机制完整细致的描述一下把

7)类加载器的双亲委派原则说一下吧?(这里有一个疑问,我说父子类加载器不是继承关系,然后面试官说不太对,这里我有一点点疑问,还请大家告知一下)

8)能说一下Java .class文件的结构吗?

9)线程池的基本机制有了解吗?非核心线程如何保证延迟结束?

10)为什么内部类会默认持有外部类的引用?

11)Handler消息机制简单说一下吧(延时的消息是如何发送的?以及通过Looper.loop()是如何处理延时消息的?)

12)为什么Handler会出现内存泄漏?

13)View中的post和handler的post有什么区别?(我说view中的handler是经过重写的,会处理关于View的相关绘制事件,然后面试官说只回答对了一部分,我有些疑问,还有其他的区别吗?)

14)有用到什么内存泄漏检测的框架吗?知道原理吗?(就是上面所说的JVM内存回收机制)

15)知道关于性能优化相关的吗?能简单讲一下吗?(布局,异步,过渡绘制)

16)能讲一下Activity的启动流程吗?

17)听你讲到了进程间通讯,PackageManagerService和ActivityManagerService进行通信的方式是什么?

18)Binder驱动底层原理了解吗?(mmap的内存地址映射)

19)Serializable和Parcable有什么区别?如何使用?

20)听你说到了sp(SharedPreference),你知道sp能跨进程通讯吗?

三面

1)自我介绍

2)讲个项目,自己最熟悉哪一个

3 )项目做了什么

4)网络请求框架怎么封装

5)还遇到什么问题没有

6)事件分发机制,多个RecycleView 嵌套怎么处理

7)OkHttp源码

8)讲一下拦截器

9)Cache缓存是怎么做的

10)图片做过吗

11)你的图片项目怎么加载大图

12)如何防止OOM

13)做过View 的性能优化吗

14)讲一下View的优化

15)层级布局

16)如何减少绘制

17)针对measure和draw 有什么优化的地方吗

18)多个view 加载卡顿怎么办

  • HR面:

1)自我介绍,抓住介绍的点让你详细说说?

2)期望工作地点

3)事业群介绍

4)为什么想要留在北京

5)为什么不读研究生

6)如何看待Android开发,为什么不接触IOS呢

7)刚开始工作压力会很大,你有没有想过怎么处理压力呢

反问
8)有没有健身房

9)有住房补贴或者房源推荐吗

10)招多少个Android应届生呀

11)应届生培养方案

12)为什么来美团?你对美团技术团队的了解有多少?

关于程序员的几个阶段

每个程序员、或者说每个工作者都应该有自己的职业规划,如果看到这里的朋友没有自己的职业规划,希望你可以思考一下自己的将来。

常常思考自己的未来,也从自己的思考中总结出了一些东西,作为第一部分来谈谈。认为一名程序员应该有几个阶段(以下时间都算上实习期):

  • 第一阶段----三年

  • 我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段

  • 第二阶段----五年

  • 五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被更年轻的人给顶替;有些人在三年里,除了写代码之外,还热衷于研究各种技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年后必然具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物

  • 第三阶段----十年

  • 十年又是另一个门槛了,转行或是继续做一名程序员就在这个节点上。如果在前几年就抱定不转行的思路并且为之努力的话,那么在十年的这个节点上,有些人必然成长为一名对行业有着深入认识、对技术有着深入认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席架构师等最关键的职位,这对于自己绝对是一件荣耀的事,当然老板在经济上也绝不会亏待你

一些面试建议及小技巧

第一部分总结一下,我认为,随着你工作年限的增长、对生活对生命认识的深入,应当不断思考三个问题:

1、我到底适不适合当一名程序员?

2、我到底应不应该一辈子以程序员为职业?

3、我对编程到底持有的是一种什么样的态度,是够用就好呢还是不断研究?

最终,明确自己的职业规划,对自己的规划负责并为之努力

关于专业技能

写完项目接着写写一名7年工作经验的Android程序员应该具备的技能,这可能是Android程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西----但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。

关于知识积累

  • 1. Android基础 & 常用

针对Android基础&常用知识,我认为对于初级开发者来说,按照优先级最主要的知识点主要包括:四大组件、布局使用、多线程 & 动画;

具体介绍如下:

  • 2. Android进阶

针对Android进阶知识,按照优先级最主要的知识点主要包括:自定义View、性能优化,具体介绍如下:

  • 3. 与时俱进、热门技术

除了基础日常使用的Android知识,我们还需时刻关注行业动态,与时俱进的学习新技术,如近些年来较为热门的Android新兴技术包括:Flutter、热修复、插件化等;

同时,了解 & 学习常用的开源库也十分重要,常用的开源库主要包括图片加载、网络请求、异步处理的开源库,具体类型如下:

  • 4. 编程语言:Java与Java虚拟机

Android是基于Java的,所以学习Java和Java虚拟机(JVM)十分重要

对于学习Java,我们移动端开发学习Java不需要后端那么深入,我认为作为Android开发者,学习的内容包括:语言特性、基础使用、集合类&机制。具体介绍如下:

对于Java虚拟机(JVM),属于底层 & 原理性的内容,具体介绍 & 学习的内容包括:

  • 5. 计算机基础

除了学习Android特定技术外,对于程序员来说,计算机基础素养也是十分重要,即所有从事技术行业的程序员都该具备的基础知识。

计算机基础主要包括:数据结构、算法和计算机网络,具体介绍如下:

学习福利

【Android 详细知识点思维脑图(技能树)】

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值