面试字节两轮后被完虐,一份字节跳动面试官给你的Android技术面试指南,请查收

1、Jvm虚拟机

2、messageQueue会不会阻塞ui线程

3、对象锁和类锁

4、之字形打印树

5、还有其他的记不清了,主要是我对二面印象太深刻了。

二面问的 Flutter 和 Dart

1、dart是值传递还是引用传递

2、Widget和element和RenderObject之间的关系

3、widget的root节点

4、mixin extends implement之间的关系(除了extends其他的没怎么用过。。)

5、jvm内存模型(感觉这个是面试官可怜我,看我什么都不会才问的=。=)

6、Future和microtask执行顺序

7、dart中…的用法(基本没用过。。)

8、await for(没用过。。)

说实话,第一个、第三个、第六个我准备的话应该能答出来的,但是一个多月没碰Flutter了,忘了都差不多。。。

此外GitHub和博客维护好很重要,像我这种demo随手写,随手删的人直接GG。。

面试字节跳动需要做哪些准备?


接下来将分:面试前、面试中、面试后 三个部分,解答一些常见的问题。

面试前

如何寻找一个面试机会?

  1. 内推:首先推荐大家走内推途径,内推的简历通过率远高于其他方式;内推的途径有:联系工作的师兄师姐、在论坛上找对应的内推贴、参加校招宣讲会 等

  2. 对应公司招聘官网直接投递:需要大家明确自己想投哪些公司,直接搜索公司的官方招聘官网(大公司普遍都有),找到自己想投的岗位投递

  3. 相关招聘网站投递:在各类招聘网站上HR也会发布对应招聘信息,可以对应的投递

需要为面试做哪些准备?

  1. 一份优秀的简历:要能说明 学校、学历、实习经历、在校期间技术项目经历 等,具体的在姊妹篇《校招啦——来自字节跳动面试官的技术简历指南》,敬请期待。

  2. 了解投递的岗位要求:就是我们常说的JD(Job Description),公司的招聘官网或发布的招聘信息里面会详细描述,如果找不到或公司没写,可以联系HR发邮件说明。

  3. 复习面试岗位相关知识:校招同学需要复习 计算机基础(网络、操作系统、计算机组成原理、数学等)、编码能力(数据结构、算法) 、技术方向基础知识(如前端同学主要看html/css/js)

  4. 整理自己做过的项目:包括实习项目、个人项目、科研学术项目、参与社区开源项目等,在面试时需要做自我介绍,面试官也可能会根据你的简历询问项目内容。

  5. 适当的做一些算法题:前端、测试等一些岗位可能不是特别重视算法,但做一些算法题能训练你的思维、代码能力;常用的刷题网站:LeetCoode、牛客网、各大高校OJ等

面试中

如何自我介绍?

技术面试自我介绍时请focus在技术方向上,有些同学会准备一段华丽的开场白,介绍自己大学期间的学生会、组织活动等经验,这些内容对于技术面试没有太多吸引力,不利于面试官找到对应你的合适问题,有时候反而会在面试官心目中减分(感觉不够专注技术)。 建议是:

  1. 有技术实习经历的同学,重点介绍实习中做过的项目,说明自己在项目中的角色、负责研发了那些部分、使用了什么技术栈、学习到了什么。

  2. 没有实习经历的同学,可以介绍自己在目标岗位的技术方向上学习了哪些内容、有做过什么个人项目 或者一些Demo项目。

  3. ACM等计算机竞赛获奖经历的要说明,加分项。

  4. 参与开源项目或社区建设的,建议说明,加分项。

  5. 学术大牛同学也可以说明自己发表论文、参与会议情况,也是加分项。如果学术方向和工作内容没有太多关系,建议不要滔滔不绝的详细介绍,如果学术方向刚好和岗位match 或 面试官有兴趣,面试官一般会主动继续聊下去。

没有实习经历可以吗?

答案是——可以的。 有技术实习经历当然好事,但是对于校招/实习同学来说,不一定人人都有实习经验,或者实习经验可能与当前岗位不match。所以不用过分担心,一般能过简历参与面试的同学,都是得到了初步的认可的。没有相关实习经验的同学,面试时可以突出自己在其他方面的优势(如:个人项目、开源项目、竞赛、学术,参考上个问题),面试官如果认可你的知识储备、能力、潜力就会通过。

没有 相关实习经历 和 没有相关知识能力 是两回事,有实习经历缺没有积累知识能力的同学,可能最终评价会不如 通过自己学习探索具备相关知识的同学。所以请一定要做好面试前的准备,让自己符合面试岗位的要求,比如投递前端岗位的同学,至少要学习html/css/js相关基础知识,对当前常用前端技术栈有一定的了解,并且有动手实践的经历。

需要对业务了解吗?

校招/实习 来说,并不强求对业务的了解,一般来说在校同学也很难对业务有深入的理解,有相关经验了解当然是加分项。

面试整体流程

通常来说,一次完整的面试包括:笔试、技术面试、岗位match、HR面试。

笔试:可能是线上笔试 或 当场笔试,校招笔试题目范围较宽,会涉及计算机基础知识、面试方向的知识技能、代码coding、数据结构 & 算法 等。

技术面试:以字节跳动为例,校招一般是2-3轮交叉技术面试,实习一般是1-2轮,考察 计算机基础、编码能力 、技术方向基础知识以及技术深度、系统设计能力、抽象能力和工程化能力、软素质 等。一面更偏向基础知识、技术广度,二三面偏向技术深度、进阶能力。

岗位match:一般是通过技术面试后,由业务部门负责人面试,偏向软素质、专业能力、个人发展与规划等。

HR面试:通常是最后一轮面试,主要聊一下职业规划、个人诉求、面试过程中的一些问题、入职相关信息(如可入职时间、实习时间、工作地点等)

遇到不会的问题如何处理?

首先要明确——谁都会有不会的问题。即便是工作多年的社招同学也会有知识盲区,有部分不会的问题并不会影响你的整个面试评价。所以,千万不要不懂装懂,这样反而会留下负面印象。 确实不会的问题请直接和面试官说明,可以让面试官给一些提示,或者征询面试官意见看能否现场查阅相关资料(一定要在面试官许可下查询,否则容易被算作作弊)。如果在提示或查询资料后,解决了原本不会的问题,也是加分项——说明学习能力、应变能力、抗压能力不错。

面试时可以问面试官什么问题?

在一轮面试结束后,面试官可能会说:“你有什么问题想问的吗?” —— 注意,这个可能也是一道面试题,面试官想通过你的问题,了解到你的职业诉求、个人规划、学习能力等,所以要慎重的选择自己的问题。 技术面试环节不建议问一些与当前面试无关、涉及公司机密、个人隐私的问题,如:加班多少/工资待遇(这个在HR面试环节可问)、公司当前收益情况、业务线具体使用的核心技术、面试官联系方式等 可以问一些与自己相关的技术方向问题,如:如果通过面试需要学习哪些内容做准备、面试官对你本轮的评价和建议(如果面试官不方便说,也不要追问)、面试过程中某个困惑问题的解决方法(时间限制面试官可能只能给出思路)等。

面试后

长时间没有得到回应如何处理?

面试后请注意查收自己的邮箱、保持电话畅通,如果长时间(3-5天)没有得到回应,建议和HR联系。校招的同学通常比较畏惧与HR交流,担心本身“薛定谔的猫”状态的结果在自己联系HR后就变得负向了,这个心理一定要克服,及时的确认面试结果才有利于安排之后的面试/offer选择。 如果真的得到了不好的结果,也可尝试问一下HR面试评价中自己的问题,不一定能得到答复,但如果HR能告诉你也利于你及时发现、解决自己的不足,为下一次面试打基础。

面试没有通过可以再次投递吗?

有的公司有面试不通过锁简历机制(一段时间内投递无效),这个也可以和HR问清楚。 我司(字节跳动)是不锁简历的,某一岗位面试不通过任然可以继续投递。但是建议大家每次投递都认真准备,你的每一次投递、面试都可能被记录,如果多次面试、投递没有体现出成长,也还是会影响后续的简历筛选与面试。

面试后可以在分享面试题吗?

可以自己记录面试相关题目、经验,为自己未来的面试做准备资料,但不建议立即分享(包括分享再网络上和分享给其他同学),有些公司笔试、面试时时会签署协议的,如果发现分享最新面试、笔试题目,可能会直接取消录用资格。

面试字节跳动需要储备哪些知识?


很多人准备面试的时候,大多数就会这样的,打开百度,输入 “Android 面试题”,找几个多的开始看。

这虽然看起来很自然,但是并不是一种 健康的方式,面试题的作用应当是查缺补漏,上学的时候也不是直接发习题册然后对着答案学习吧?

知乎上有个问题,叫做 如何高效学习,里面有一个回答我觉得很符合我自己的观点,就是 建立起自己的知识体系,建立知识体系的目的在于:

  • 巩固记忆。

  • 认识自己,找到自己的优势及不足。

  • 把握复习的进度。

  • 经验总结。

目前我自己的总结的会分为以下几个大点:

Java 基础知识

  • 面向对象的基本思想

  • Object类相关:Object类的几个关键函数、String涉及到的常量池概念,序列化 & 反序列化。

  • 重要关键字:finalstatic

  • 内部类:内部类的分类、应用场景、内部类编译成class后是怎么样的。

  • 抽象类 & 接口:区别、应用场景。

  • 编码:编码的目的、分类。

  • 异常:异常体系、自定义异常。

  • 注解:注解的基本概念、分类、编译时注解 & 运行时注解。

  • 容器:重要容器的内部实现、容器间的对比。

  • 内存模型。

  • 垃圾回收。

  • 类加载的过程。

  • 泛型:分类、通配符 & 上下边界、泛型擦除。

  • 反射:使用。

Android 基础知识

  • DalvikArt虚拟机

  • Activity:生命周期、launchMode

  • Fragment:生命周期、懒加载、两种Adapter之间的区别。

  • BroadcastReceiver:基本概念、广播分类、权限。

  • Service:生命周期、onStartCommand的返回值、startServicebindService的区别、相同进程 & 不同进程的交互、IntentService实现原理。

  • 重要的工具类 & 源码实现:AsyncTaskHandlerThreadHandlerIntentServiceLruCacheLinkedHashMapSparseArray

  • RecyclerView:缓存原理、和ListView的对比、Adapter如何适配多种layout

  • 存储:数据库升级 & 优化、ContentProviderSharePreference

  • SDK版本升级的兼容问题。

  • Android的权限管理机制。

图片

【附】相关架构及资料

资料领取

点击这里免费获取Android IOC架构设计等资料

领取获取往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

的负担。**
[外链图片转存中…(img-2fI4uw6i-1711031398115)]
[外链图片转存中…(img-qY4CBk9f-1711031398116)]
[外链图片转存中…(img-uh1Kxr8r-1711031398116)]
[外链图片转存中…(img-ixtRPW6K-1711031398116)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-1SjmwgWF-1711031398117)]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值