ssc网站建设,免费网站设计定制,注册资本1000万的公司需要多少钱,WordPress 秒开写在前面
身边有不少去大厂面试的朋友#xff0c;其中小金面试字节跳动的经历很有意义#xff0c;在这里分享给大家。小金是末流211计算机专业大三本科生#xff0c;前几天面试了字节跳动的广州Android开发实习生。下面是他的面试经历#xff0c;还有一些他自己的经验。
…写在前面
身边有不少去大厂面试的朋友其中小金面试字节跳动的经历很有意义在这里分享给大家。小金是末流211计算机专业大三本科生前几天面试了字节跳动的广州Android开发实习生。下面是他的面试经历还有一些他自己的经验。
Android 知识体系 在 Android 开发的过程中需要很多很多的知识而有些知识也很难为其分类在这里我把它们分为上述五个部分UI、架构、性能、NDK、其他其他则可以细化为代码风格学习能力第三方库等。
UI方面 首先是 UI 方面我相信大多数人都是开发 Android 应用的所以 UI 的知识必不可少。UI 一共分为三部分绘制、布局和触摸反馈。要想写出漂亮的 UI 搭配动画这需要花费巨量的时间可能已经有特别多的朋友和我一样在一直跟进扔物线朱凯的HenCoder系列了。如果你可以写出非常漂亮的控件或者动画框架并开源出来我相信你找份好工作已经没有问题了。 UI开发知识体系 架构方面 这个方面是卡年限的一个东西。随着工作的需要以及阅历看代码的增长我们总是会越来越不满意自己写的代码模块比如我就深受这个的苦恼我经常会出现三个月前写的代码自己都看不下去强迫症的我一定会把它翻写的。但如果项目周期短的你千万不要像我一样做。
当你不断改写封装自己的代码的时候你可能就已经涉及到了架构方面的知识啦。架构方面的知识主要包括设计思想及其选择合适架构的能力这两者通常来讲是相辅相成的。每一种新的架构或设计思想问世往往是用来解决实际问题的他们解决问题的侧重点各不相同因此在什么时候采用什么架构或设计就非常考验程序员的阅历了。通常这部分的知识学起来最为困难因为他不仅仅是一种思想如果你的代码量不多或者接触的项目比较小的话你往往会很少触及到这部分的知识最后自然而言又忘了。
所以在这方面我建议大家在工作之余多参考 GitHub 上开源的完整项目也要多写点自己的项目提升自己的代码量和架构能力。 移动架构师知识体系 性能方面 性能方面相信开发稍大型 APP 的工程师体会尤其深刻了。随着 APP 工程的体量越来越大开发功能越来越多你会发现原来非常流畅的 APP 可能会出现卡顿、OOM、ANR 等现象除了前面韩神所提到的内存泄漏可能你还会因为其他问题导致性能表现不够优秀。而这部分的只是相对比较零散也很难总结更多的就是你的经验积累所以多年经验的程序猿更受企业的青睐。 性能优化方面知识体系 NDK方面 这一方面的知识比较特殊很多 Android 开发工程师在初中级阶段可能都不会涉及到。在开发中我们可能只会在特定的领域才会用到 NDK 进行开发由于我也没遇到过所以暂不多讲。 NDK模块开发知识体系 Android 市场分析
总体上目前市面上可以将互联网公司分为两类 没有实体产品的以软件产品为主的互联网公司其中相当一部分为外包 有实体产品的将硬件和软件结合起来的互联网公司。
我们暂且把它们称呼为 A 类和 B 类。
A 类公司往往偏向于 UI 及其架构性能稍次并且大多数中小型企业会要求应聘者能熟练掌握市场上流行的开源库以节约开发成本。这类公司开发的 APP 往往是纯虚拟的产品 —— 社交通讯、各类工具、资源聚合等。这些产品因为竞争激烈功能需求变化也快所以版本迭代的速度会非常快。这个时候一个好的架构就可以节省许多时间它能快速的响应需求并迅速添加新的功能模块。UI 也是重点在两个 APP 功能差不多的情况下拼的就是用户体验了其中用户最能感受到的就是两点首先是界面是否美观动画是否自然其次才是 APP 是否流畅。
A 类公司对人才的需求大概是这样。 而对于B 类公司他们因为有实体产品因此往往会要求应聘者具有某种特殊的技能例如蓝牙WIFI等。
这类公司往往偏向于性能及 NDKUI 稍次。在目前的大环境下这类公司多数都在物联网产业链上以智能硬件、智能家居、机器人居多而这类公司的话大部分其实都是传统企业转型而来因此其开发的产品比较注重功能的完善及响应速度UI 的话反而会稍微丑陋一些。毕竟消费者买的是实体产品配套的 APP 就算再丑也得用不是么。
他们对人才的需求往往是这样的 明确自己想去什么样的公司或者对哪一类的业务更感兴趣会有助于你更有的放矢地学习技能。
Android 学习方式
我认为最主要的一点就是主观能动性或者说兴趣如果你对 Android 开发没有太大的兴趣那么还是尽早换方向吧。有了兴趣自然是确立一个比较正确的学习路线。据说我们参会的还有一些应届毕业生或者还没开始工作的朋友。可能还在学习中很迷茫我这里先给大家说一下我的学习经历。
学习 Android 无非几种方式 看书类 此类可能比较全面但也意味着过时的问题我不是非常提倡但书籍是人类进步的阶梯你们可以考虑。其实我也买了挺多相关书籍但自从习惯在网络上学习后就不看了。 线上课程直播或者录播 这个可能是初学者当下比较受欢迎的学习方式了但所讲知识通常比较基础而且学习速度慢但效率确实挺高的。这也是我在入门 Android 的时候用的最多的方式。采用这种方式学习的时候通常会有一个毛病就是喜欢边看边写这是我不提倡的我提倡看一段写一段。在前期你可以不用一整段都看完以小节的方式学习后再写代码。前期可能你会觉得自己像在背代码一样但我不可否认这确实是效率挺高的方法。但真的太费时了至少我在工作后没用过这种方案。 这里放上我一直学习以来收集到的视频资料有想获取的小伙伴可以参考文末的获取方式~ 看博文、看别人的开源项目、看官方文档、官方例子代码 这是我现在用的最多的一种学习提升方式。一般可以通过上面的看书或者看录播的方式学习到完整的基础组件和代码编写但这时候你用基础的组件实现出来的东西美观度通常比较局限。但当你加入公司后产品会设计出各种新颖的效果而这些效果并不能通过原生控件实现这时候网上超大量的资源就涌现出来了。掌握 GitHub 正确的搜索姿势通常能让你事半功倍。而这个时候一个熟悉的英文阅读能力和理解能力将展现的淋漓尽致。随着开发经验的积累你会发现你的开发速度直线飙升。
Android 提升建议
成为一名Android开发者很容易但是要成为一名成功的、突出的Android开发者却不那么容易。这需要付出很多的努力耐心奉献和毅力才能做到。
我并没有什么捷径或者简单的方法来告诉你让你成为一名成功的开发者。但如果你愿意全身心投入并付出努力的话你肯定会得到你应得的成功的。
应大家的请求我这里给大家提供一些提升建议仅供参考。 开始的代码 大部分的开发者都不会抽时间去阅读其他开发者所写的代码他们大多数时间只是花在写他们已经知道的事情上。但那并不利于你成长为一名优秀的开发者也不会增长你的见识。我建议大家阅读同事的代码让你对你们的项目更加了解当你对公司的产品代码足够了解后你给老板提加薪的时候才更有底气。 有的人会说咱们公司就我一个 Android 开发者我看谁的代码呢GitHub 上那么多优秀的开源应用和类库我建议你们去阅读并开始学习它们每天 30 分钟的代码阅读量是个非常好的开始。你将会惊讶的发现还有如此多美妙的东西是你没见过的。 克服对未知的害怕 Android 系统很大非常大。你不可能在一两个月内完全掌握它。随着学习越深入你会发现越多的内容需要学习。作为一名初学者很容易也很正常地出现这种对未知恐惧的害怕。我也不例外曾经我学习 RxJava 的时候我看了很多很多的博文但持续了整整一个周依然不懂这时候觉得 RxJava 真是太难了。在这种时候不妨先放下它一段时间过些日子再去学习你会觉得如鱼得水的。比如我前面就在GitHub 上开源了RxJava2Examples尝试去克服对未知的恐惧吧学习那些你确实需要用到的东西能够让你开始手头正在构建的应用然后慢慢地开拓你的视野。 尝试开始写博客 写博客或许是一件相当费时的事或许你写的博客只是阅览了多篇文章后的总结而以或许你写的博客一点都不深入但但是别人的永远是别人的作为一个已经写了很多博文的我来说我所收获到的东西不是这点时间能比拟的。因为只有你足够懂了你才能讲给别人听。 开始贡献开源库 GitHub上有很多很棒的开源库但由于一些特殊的原因可能作者并没有时间维护它。尝试去为开源库贡献你的源码你会得到非常非常非常大的反馈的。
除了为别人开源库贡献你也可以开源自己的代码。图片压缩在项目中挺常用的在编写我们公司的项目的时候我自己写了图片压缩后面觉得挺好用的所以直接把它开源到了GitHub上。这个过程非常的 nice不仅学习到了特别多的知识而且通过大家的测试我的开源库的伸展性更佳。开源的过程有很多的东西是需要你学习的而且这有助于你成为一名优秀的开发者。
花一些时间来学习 Android 最佳实践
要使自己比其他开发者更加出众并能构建出整洁美观而又功能完善的应用你需要开始学习一些 Android 开发最佳实践。除此之外你还应该多去关注市场发展看看最近流行的库都是怎么用并尝试阅读它们。
总结
其实要轻松掌握很简单要点就两个
找到一套好的视频资料紧跟大牛梳理好的知识框架进行学习。多练。 视频优势是互动感强容易集中注意力
你不需要是天才也不需要具备强悍的天赋只要做到这两点短期内成功的概率是非常高的。
对于很多初中级Android工程师而言想要提升技能往往是自己摸索成长不成体系的学习效果低效漫长且无助。 以上就是总结的关于在面试的一些总结希望对大家能有些帮助除了这些面试中需要注意的问题当然最重要的就是刷题了这里放上我之前整理的一份超全的面试专题PDF大家有兴趣的可以自行领取或者私信我 还有 高级架构技术进阶脑图、Android开发面试专题资料高级进阶架构资料 帮助大家学习提升进阶也节省大家在网上搜索资料的时间来学习也可以分享给身边好友一起学习。
【Android核心高级技术PDF文档BAT大厂面试真题解析】点击Android架构视频BAT面试专题PDF学习笔记即可获取查看免费领取方式 A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)即可获取查看免费领取方式**
[外链图片转存中…(img-URxC2NZr-1620984139088)] 这里只是整理出来的部分面试题后续会持续更新希望通过这些高级面试题能够降低面试Android岗位的门槛让更多的Android工程师理解Android系统掌握Android系统。喜欢的话麻烦点击一个喜欢在关注一下~