前言
对于android开发我们大部分工作都是在应用层但为了体现"技术含量"以及"知其所以然"以便在遇到具体问题时不至于束手无策因此有必要了解底层的工作机制。
比如Android NDK 开发可能在平时的项目开发中不常用到但是这并不代表其不重要。相反NDK的学习有助于加深开发者在阅读框架的源码理解是Android开发人员的进阶过程中必须要掌握的技能。
为什么NDK越来越重要了
一是短视频、直播等行业迅猛发展。音视频社交成为流量新的增长点。近两年短视频、直播、网络视频等行业不断爆热其中抖音一骑绝尘日活已破2.5亿替代QQ/微信登上19年猪年春晚成为又一国民级APP。
二是新一轮技术如人工智能、5G、物联网等新技术的融合发展将不断寻找实用落地点这在移动为王的年代80%市场份额的安卓是最大受益者。据运营商消息2019年下半年5G手机在国内上市2020年全面商用届时音视频将迎来又一波热潮。
而在实际具体应用上除了上面提到的短视频方向还有各大视频应用图像处理、滤镜、裁剪等等骚操作都是需要专业的音视频开发知识才能做出来的。
字节跳动Android面经一面问的 Java 和 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。。
面试字节跳动需要做哪些准备接下来将分面试前、面试中、面试后 三个部分解答一些常见的问题。
面试前如何寻找一个面试机会
需要为面试做哪些准备
如何自我介绍
技术面试自我介绍时请focus在技术方向上有些同学会准备一段华丽的开场白介绍自己大学期间的学生会、组织活动等经验这些内容对于技术面试没有太多吸引力不利于面试官找到对应你的合适问题有时候反而会在面试官心目中减分感觉不够专注技术。 建议是
没有实习经历可以吗
答案是——可以的。 有技术实习经历当然好事但是对于校招/实习同学来说不一定人人都有实习经验或者实习经验可能与当前岗位不match。所以不用过分担心一般能过简历参与面试的同学都是得到了初步的认可的。没有相关实习经验的同学面试时可以突出自己在其他方面的优势如个人项目、开源项目、竞赛、学术参考上个问题面试官如果认可你的知识储备、能力、潜力就会通过。
没有 相关实习经历 和 没有相关知识能力 是两回事有实习经历缺没有积累知识能力的同学可能最终评价会不如 通过自己学习探索具备相关知识的同学。所以请一定要做好面试前的准备让自己符合面试岗位的要求比如投递前端岗位的同学至少要学习html/css/js相关基础知识对当前常用前端技术栈有一定的了解并且有动手实践的经历。
需要对业务了解吗
校招/实习 来说并不强求对业务的了解一般来说在校同学也很难对业务有深入的理解有相关经验了解当然是加分项。
面试整体流程
通常来说一次完整的面试包括笔试、技术面试、岗位match、HR面试。
笔试可能是线上笔试 或 当场笔试校招笔试题目范围较宽会涉及计算机基础知识、面试方向的知识技能、代码coding、数据结构 以字节跳动为例校招一般是2-3轮交叉技术面试实习一般是1-2轮考察 计算机基础、编码能力 、技术方向基础知识以及技术深度、系统设计能力、抽象能力和工程化能力、软素质 等。一面更偏向基础知识、技术广度二三面偏向技术深度、进阶能力。
岗位match一般是通过技术面试后由业务部门负责人面试偏向软素质、专业能力、个人发展与规划等。
HR面试通常是最后一轮面试主要聊一下职业规划、个人诉求、面试过程中的一些问题、入职相关信息如可入职时间、实习时间、工作地点等
遇到不会的问题如何处理
首先要明确——谁都会有不会的问题。即便是工作多年的社招同学也会有知识盲区有部分不会的问题并不会影响你的整个面试评价。所以千万不要不懂装懂这样反而会留下负面印象。 确实不会的问题请直接和面试官说明可以让面试官给一些提示或者征询面试官意见看能否现场查阅相关资料一定要在面试官许可下查询否则容易被算作作弊。如果在提示或查询资料后解决了原本不会的问题也是加分项——说明学习能力、应变能力、抗压能力不错。
面试时可以问面试官什么问题
在一轮面试结束后面试官可能会说“你有什么问题想问的吗” —— 注意这个可能也是一道面试题面试官想通过你的问题了解到你的职业诉求、个人规划、学习能力等所以要慎重的选择自己的问题。 技术面试环节不建议问一些与当前面试无关、涉及公司机密、个人隐私的问题如加班多少/工资待遇这个在HR面试环节可问、公司当前收益情况、业务线具体使用的核心技术、面试官联系方式等 可以问一些与自己相关的技术方向问题如如果通过面试需要学习哪些内容做准备、面试官对你本轮的评价和建议如果面试官不方便说也不要追问、面试过程中某个困惑问题的解决方法时间限制面试官可能只能给出思路等。
面试后长时间没有得到回应如何处理
面试后请注意查收自己的邮箱、保持电话畅通如果长时间3-5天没有得到回应建议和HR联系。校招的同学通常比较畏惧与HR交流担心本身“薛定谔的猫”状态的结果在自己联系HR后就变得负向了这个心理一定要克服及时的确认面试结果才有利于安排之后的面试/offer选择。 如果真的得到了不好的结果也可尝试问一下HR面试评价中自己的问题不一定能得到答复但如果HR能告诉你也利于你及时发现、解决自己的不足为下一次面试打基础。
面试没有通过可以再次投递吗
有的公司有面试不通过锁简历机制一段时间内投递无效这个也可以和HR问清楚。 我司字节跳动是不锁简历的某一岗位面试不通过任然可以继续投递。但是建议大家每次投递都认真准备你的每一次投递、面试都可能被记录如果多次面试、投递没有体现出成长也还是会影响后续的简历筛选与面试。
面试后可以在分享面试题吗
可以自己记录面试相关题目、经验为自己未来的面试做准备资料但不建议立即分享包括分享再网络上和分享给其他同学有些公司笔试、面试时时会签署协议的如果发现分享最新面试、笔试题目可能会直接取消录用资格。
最后
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题把技术点整理成了视频和PDF实际上比预期多花了不少精力包含知识脉络 诸多细节由于篇幅有限这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获
上述高清技术脑图以及配套的架构技术PDF可以点击我的GitHub免费获取
当程序员容易当一个优秀的程序员是需要不断学习的从初级程序员到高级程序员从初级架构师到资深架构师或者走向管理从技术经理到技术总监每个阶段都需要掌握不同的能力。早早确定自己的职业方向才能在工作和能力提升中甩开同龄人。
- 无论你现在水平怎么样一定要 持续学习 没有鸡汤别人看起来的毫不费力其实费了很大力这四个字就是我的建议
- 我希望每一个努力生活的IT工程师都会得到自己想要的因为我们很辛苦我们应得的。
当我们在抱怨环境抱怨怀才不遇的时候没有别的原因一定是你做的还不够好
么样一定要 持续学习 没有鸡汤别人看起来的毫不费力其实费了很大力这四个字就是我的建议
- 我希望每一个努力生活的IT工程师都会得到自己想要的因为我们很辛苦我们应得的。
当我们在抱怨环境抱怨怀才不遇的时候没有别的原因一定是你做的还不够好