1、写在前面

今天是除夕夜,也是2020农历年的最后一天,回顾2020年大家明显感觉到我已经在各大博客平台(CSDN、掘金、知乎、微信公众号)不再更新和分享文章,先向一直默默关注我的小伙伴们说声抱歉。那是不是2020年我放弃一直以来坚持的写作呢,其实并没有,相反2020年我挑战了自己很多的极限,做了很多自己之前没做过的事。我相信2020年对于每个人来说都意义非凡,如果用一句话来形容我的2020年,那就是一切都在变化,学会拥抱变化,努力在变化中成长。回首这一年,可以说是我毕业后变化最多的一年:

  • Change1: 毕业快三年了,不舍地告别了我的老东家(扇贝),去到了梦想中的大厂(阿里)工作,离开了工作生活3年多的城市(南京),来到了杭州重新开始。一切都是陌生的,刚开始超级不习惯,但又能怎样呢?已经没有回头路了,只有去努力适应它。
  • Change2: 写了两个系列的技术专栏教程,一个是《Dart入门实践》收费专栏,总共25篇Dart、Flutter相关技术文章以及实战源码,其中包括基础语法、Dart异步进阶编程篇、Flutter实战篇,目前发布在gitchat平台上;另一个是《Kotlin Wiki教程》免费专栏,收录发布在慕课网,总共40篇Kotlin相关技术文章,目前还在更新中。希望大家多多支持,关于收费专栏,目前还有一些免费名额后续会在公众号平台做为福利发布。
  • Change3: 进入阿里后,承担的工作也是我一直比较感兴趣的,这一点很庆幸。在这大半年里主导了Flutter跨平台从0到1在团队内部的落地和持续建设以及近期在Flutter动态化方面取得比较大的突破,并且把Flutter动态化落地于近期新业务场景中。
  • Change4: 公众号改名为:熊喵先生,2021年继续开启技术文章分享之路,结合在阿里的工作,主要会在Flutter跨平台技术、Flutter动态化以及端侧多容器(Flutter、Weex、H5、小程序)治理方面展开,还有Kotlin基础以及Android中jetpack Compose在实际中的落地等。然后发布一些阿里内推渠道文章,需要内推的可以直接在公众号留言,内推岗位不限于前后端不限于技术岗。最后文章还是会统一发布在公众号、个人博客平台、知乎、掘金、CSDN、简书、开发者头条、慕课网、极客学院等平台。

2. 聊聊我的2020年面经

虽然面试已经过去大半年,但是依旧能回忆起当初面试场景,所以凭着记忆给大家分享一段面经。2020年疫情期间我总共面试了6家公司分别是阿里巴巴(已入职)、网易云音乐(已拿offer)、趣头条(已拿offer)、图灵视频(已拿offer)、字节跳动(跪在最后一轮技术面)、微软中国(跪在第二面)。由于时间隔了蛮久,就拿两个印象比较深面试经历分享给大家,分别是阿里巴巴跟微软中国面经。

2.1 阿里巴巴(已入职)

拿到阿里offer对我来说比较意外,因为从面试到最后确定发offer前后经历了一个月时间,当时投递阿里并不奢求能进。阿里面试总共经历了5轮面试,两轮电面、一轮笔试、两轮视频面。

一面

投完简历后隔了2天,在19:30,接到了来自杭州阿里一面电话,一面1.5小时,面试官是P7大佬,下面是一些技术方面的问题:

  • Android中View的事件分发流程以及如何解决滑动冲突
  • 阐述下Android中的消息机制,结合Looper, MessageQueue, Handler以及为什么Handler能实现线程间的切换
  • 内存泄漏发生场景有哪些以及解决的办法?LeakCanary有使用过吗?能大概说下它实现的原理吗?
  • 说说你最熟悉Android第三方库(这里分别说了Glide图片加载库,包括生命周期绑定以及Glide的三级缓存等)
  • 说说你印象中技术挑战最大以及收获最多的一个项目(这个环节持续时间比较长,建议先从整体介绍,再局部细节介绍。面试官问了很多相关细节)
  • 看你写了很多Kotlin的文章,请说下Kotlin中的扩展函数本质原理是什么?(这个问题实际上还是比较简单的,因为只要反编译过Kotlin扩展函数的代码都知道回答)
  • 有研究过Flutter吗?说下Flutter与ReactNative它们跨平台方案有什么本质不同?有在实际项目中使用Flutter吗?你是如何解决Flutter混合栈跳转问题的呢?

一面结束后说之后有个笔试题目邮件。

二面

试题目是java代码模板,只需要把具体实现写到函数中即可,题目是设计一个逻辑表达式计算器,因为我之前写过一个四则运算计算器的实现,其中对于括号的处理是类似的,所以花了一小时就把代码撸出来了并把所有示例中的case都跑过了,然后再花了半个小时检查代码后就提交了。

三面

第三面相对于二面隔了近一周时间才联系,本以为自己挂了,所以没怎么关注了。也是在晚上接到了一个来自杭州的电话,问我现在是否方便开始三面面试。其实是一点准备都没有,突然就来了三面。三面面试官是P8大佬,P8大佬全程都没有问具体Android相关技术点,而是给了几个技术场景问我该怎么解决。我给出一种解决方案后,他又接着追问还有其他方案吗,把你知道的方案都说出来。第三面虽然没有很多具体技术细节点,但是这一个小时却是我最烧脑的一轮面试。过了一个多小时,最后问了个稍微轻松的问题:看了你的博客写了很多文章,你觉得持续分享技术文章的动力是什么?

四面

第四面依然是一周之后,这次是在早上接到约第四面视频面试的电话。第四面的面试官是P9大佬,约在了当天晚上22:30,心里想阿里P9大佬都这么忙的吗。当天21:00就在电脑面前候着,特地把电脑桌前书整理了下,确实挺紧张的,没想到过会冲进阿里最后一轮技术面。视频面试的P9大佬比较成熟稳重型,但是看着比较有亲和力。先是做了简单的自我介绍以及自己目前研究技术和一些项目经验。和P9大佬聊天整体还是比较轻松的,持续了40多分钟,下面列举问的几个问题:

  • 给了一个项目场景,谈下你的项目架构是怎么样的,最好是能当场画出架构图的那种。(这个节点聊了挺多,其中还涉及到一些DDD方面互相交流,感受颇深)
  • 看到简历上写了很多关于Kotlin的,那你对比一下Kotlin和Java,你觉得Kotlin的优势有哪些,可以从语法、工程性等多个方面列举一些。
  • 对于一门新技术落地的,你是怎么去推广到团队中使用的。
  • 说下你认为技术最有收获或挑战的项目,遇到了哪些问题,你是怎么解决的。
  • 说下你平时都是怎么去学习技术的。(我记得当时正好我共享屏幕给面试官,无意中打开我在掘金上博客,然后就说平时写写技术博客总结学习技术,他貌似很感兴趣,叫我给他介绍一下我写的博客, 我挑了一篇文章给他大致介绍一下文章的内容)

虽然持续只有40分钟,大佬也没直接告诉我结果,但是明显感觉还是比较舒服满意的。面完四面,我知道技术面基本过了,最后就是HR面了。

五面(HR面)

第五面HR还是比较快的,第二天就收到了HR视频面试邀约,约的依旧是晚上。从网上了解到阿里HR面试也是非常严格,我提前做了准备。关于HR这块由于涉及到一些保密性问题,这块就不展开了。HR面试结束后,大概隔了两天谈了薪资待遇然后就收到了口头offer,随即就收到了offer邮件。

2.2 微软中国-苏州(挂在第二面)

微软的面试是这几家公司中体验最好,最高效。首先是在boss上投递中文简历,我面试的是Mobile Engineer-Android/Outlook Mobile 英文要求是middle。简历经过初筛后,会有微软专门HR联系你并详细介绍微软和面试的岗位要求和情况,并且告诉你需要准备哪些东西。其中就包括中文简历、英文简历、英文自我介绍以及面试中会涉及考核的点(其中包括过往的工作、换工作的原因、Coding代码三个方面)。面试下来总的感觉微软对英语看重大于技术,特别是对于英语口语还是比较看重的。

面试准备

英文简历我就在github上参考了一些大佬的英文简历模板,然后写自己具体内容,英文简历全部采用markdown写的。关于英文简历对编写有任何疑问的,都可以给我留言。然后就是准备英文自我介绍,150~200字。

一面

微软第一面也是视频面试,面试官是中国小哥,首先用英文简单介绍自己,然后又用英文简单介绍我的家乡。前面英文交流结束后,接着就开始技术的面试,不过比较人性化点的是技术面试是中文。技术问题问的不多,全程半小时,像是一个摸底面试。

  • 请简单说下Android中View加载流程
  • 请简单说下Android中事件分发机制
  • 请简单说下Android中的Handler作用,请结合MessageQueue、Looper以及各自工作原理
  • 请简单说下ThreadLocal的实现原理
  • 平时是怎么学习Android技术的
  • 最近在研究Android哪方面的技术
二面

微软第二面就是Test Project的环节,其实就是给了gif页面的效果,包括项目中使用到的图片,mock数据json,要求一周时间完成这个效果,并把最后的可安装应用程序包和源码一并发到邮箱。对于项目的要求是:

  • 尽量不要使用第三方库,希望自己能独立解决问题
  • 使用Java代码,能使用Kotlin更佳
  • 必要的正确代码注释以及测试用例

对于第二面页面效果,实际上在之前项目有写过类似的,并且Kotlin那时候已经比较熟练了,所以直接用Kotlin撸起,并把之前写的代码拿过来直接用,只花了一天半就完成了效果发了过去了,没想挂了。当时还挺纳闷的,因为效果确实实现了,去问挂了的原因,原来是代码中少了必要的注释以及必要的测试用例,没想到最终败在了细节上。后面HR小姐姐问是否再尝试其他Android岗位,因为她说一面面试官对我评价还是很不错的,当时因为已经接了阿里offer了,就婉拒了。

4. 写了两个完整系列的技术指南

4.1 《Dart入门实践》

众所周知,Flutter 在跨平台、性能方面有着得天独厚的优势,然而 Flutter 应用开发离不开 Dart,所以学习好 Dart 技能是掌握 Flutter 应用开发的必备技能!但国内有关 Dart 的文章和资料并不多见,成体系的 Dart 文章更是少之又少。平时阅读了大量国外有关 Dart 的优秀文章以及结合自己工作中积累的 Flutter 开发经验,深入浅出讲解 Dart 要点,让你可以获得 Dart 官方文档之外的 Dart 技能和原理分析。这是专栏主要章节结构, 其中最为核心的就是Dart中异步编程系列。

  • 基础篇: 通过开头两篇,我们将逐步讲解 Dart 中一些常见的基本语法,如:变量和常量、基本数据类型、流程控制选择和循环等。后续内容会着重深入分析 Dart 中的集合、函数、集合操作符函数、面向对象、继承和 minxins、类型系统和泛型、library 的使用,以及 Dart 最新加入的语法可空非空类型、扩展函数 extension、泛型强化等。
  • 进阶篇: 这部分主要讲解 Dart 异步编程中的核心功能以及Dart 2.6 版本加入的 Dart 与 C 的互相调用。最后,我们还会对 Dart 虚拟机运行原理进行分析和说明,通过学习你将会理解 Flutter 的 hot reload 的原理。
  • 实战篇: 最后我们会通过一个高仿开眼 App 的 Flutter 实战项目把本专栏前面的知识融会贯通加以应用。(注意:由于最后部分篇幅有限,我们将不会详细介绍 Flutter 组件的使用,但我们将会在 github 上提供完整源码。)

具体详情请参考下面二维码:

4.2 《Kotlin Wiki教程》

Kotlin入门教程主要大概是40多篇文章,分为Kotlin环境配置篇、Kotlin基础语法篇、Kotlin高级语法篇、Kotlin实战篇。从0到1全覆盖Kotlin几乎所有的语法点。目前已经收录在慕课网的wiki教程中,特别适合刚入门Kotlin新手,不仅仅会阐述如何使用Kotlin,更会Kotlin语法背后的原理。

具体详情请参考下面二维码:

5. 后期规划

由于目前在阿里主要是负责Flutter跨平台容器的建设和落地以及一些有关Kotlin Android与后端的内容,所以对于后面文章规划主要分为Flutter和Kotlin两大方面进行按模块的展开。这样可以把在工作中遇到问题以及一些比较不错解决方案分享给大家。

5.1 Flutter后期的文章规划

对于Flutter的后期规划,列举的还是很详细的,因为这就是后续在团队内部展开学习的一个整体路线图。主要涉及到了Dart基础知识、Flutter UI组件、状态管理、混合插件开发、引擎层原理源码、第三方库使用与解析、性能监控以及打包发布、Flutter动态化方案等。对于Dart基础知识可以参考《Dart入门与实践》,里面针对Dart的知识点做了详细讲解,后面即将发布顺序就是Dart APT技术、Flutter UI组件相关、状态管理等。

对于Flutter的后期规划,列举的还是很详细的,因为这就是后续在团队内部展开学习的一个整体路线图。主要涉及到了Dart基础知识、Flutter UI组件、状态管理、混合插件开发、引擎层原理源码、第三方库使用与解析、性能监控以及打包发布、Flutter动态化方案等。对于Dart基础知识可以参考《Dart入门与实践》,里面针对Dart的知识点做了详细讲解,后面即将发布顺序就是Dart APT技术、Flutter UI组件相关、状态管理等。

5.2 Kotlin后期的文章规划

对于Kotlin的后期规划,主要是会专注于两个方面: 一个Kolint在Android中最新声明式布局框架JetpackCompose,另一个是Kotlin在服务端一些应用(比如Ktor),因为这些是和自己目前的工作比较匹配。所以前期会针对一些Kotlin中比较重要的知识点进行回顾,比如代理、lambda表达式、泛型、注解、反射、DSL、协程以及Kotlin性能优化系列篇。

5.3 面经准备相关的文章

主要分享一些在面试准备这几个月里,自己的一些复习规划以及沉淀一些技术文章,其中就包括算法数据结构刷题、Android和Java相关面试题、JVM相关面试题、Kotlin和Flutter相关面试题以及自己工作中沉淀技术经验积累。下面这张图从能力角度出发,划分成不同的维度,每个维度都需要去重新复习和巩固一遍,虽然说是为了面试,但是思考和梳理过程也是非常重要,帮助更好了解自己,尽快查漏补缺然后不断完善自身能力。

6. 熊喵先生的小总结

最后,这就是熊喵先生这一年所经历变化和所做的一些事情。也正是这几次面试给了我很大的触动,持续分享技术文章确实帮助我很多,就比如阿里最后一轮P9大佬的面试,就是因为看到了我写很多博客文章,给了我很不错的面试评价。这也是我重新拾起分享技术文章,不忘初心,继续出发的原因。你们的熊喵先生又回来了,2021年将会继续投入到各大博客平台分享技术文章,2021年也希望能和你们一起继续成长,感谢一直不离不弃的关注。新年快乐,2021继续努力。

消失了一年,我都干了些什么?相关推荐

  1. 【一周读书】哲学家,你们都干了些什么?

    书籍:<哲学家们都干了些什么> 在读这本书之前,我对哲学的印象是这样的: 哲学似乎和宗教有点关系?似乎在解决人的精神痛苦方面的问题?哲学就是一大堆难懂并且无用的理论!我要是和同学谈哲学肯定 ...

  2. 什么是哲学?《哲学家们都干了些什么?》读后感

    <哲学家们都干了些什么?> 前言 自从听到哲学这两个字开始,其实多年来心中有个问题,对,什么是哲学,哲学有什么用,直到我读了,<哲学家们都干了些什么?>林欣浩,林欣浩 并不是什 ...

  3. 【哲学问题】-《哲学家们都干了些什么?》

    引言 本文来源于<哲学家们都干了些什么?>这本书以及本人阅读此书之后的一些想法.这本书虽通熟易懂,但贯穿了哲学所涉及的大部分内容,我将挑出书中涉及的比较重要的内容并融入我的部分思考分几次来 ...

  4. 西西弗的石头----读《哲学家都干了些什么》有感

    <西西弗的神话>里讲述了一个希腊神话,说西西弗被众神惩罚,把一个巨石推向山顶.但石头一到山顶又会自己滚下来,西西弗必须重复这样的苦役,直到永远.加缪用这个例子来说明我们生活的荒谬. 西西弗 ...

  5. 《哲学家们都干了些什么》读后感

    上帝既然知道亚当和夏娃会偷吃禁果,为什么一开始不去阻止他们? 奥古斯丁的解释是,关键在于自由.上帝给了亚当和人类自由意志,所以也必须让人类拥有作恶的可能. 更具体地说,上帝是善的,而上帝的善表现在上帝 ...

  6. 读书:哲学家们都干了些什么

    哲学本质上是人理解人.人认识人的理性活动,是对世界基本和普遍之问题研究的学科,是关于世界观的理论体系.--百度百科 这本书应该是想用不那么严肃的方式串起整个哲学史,可能有一些地方不那么详实和严谨,但对 ...

  7. 进华为半年我都干了些啥

    楼主目前在华为云搞Java开发,22年8月份入职的.和大家分享下入职半年我都干了些什么事情. 主要分为两个方面. 第一个是业务,华为云是微服务架构,楼主是Java开发和Python开发,进入了其中一个 ...

  8. 哲学家们都干了些什么?

    有道是,人不能闲,人一闲下来,就会胡思乱想.这不,闲得无聊读了一本<哲学家们都干了些什么?>. 谈到哲学,就是思考诸如"人为什么活着?人生的意义是什么?宇宙的本质是什么?&quo ...

  9. 转载:IP-Guard都干了些什么(其他如威盾等亦差不多)

    ##IP-Guard 整个一裹着信息安全软件外衣的超级流氓,下面来看一下它对我们的系统都干了什么. 首先是生成的文件,别看它安装程序那么小,其实生成的文件很多也一点都不小 C:\Program Fil ...

  10. 看看C# 6.0中那些语法糖都干了些什么(上篇)

    一:自己主动初始化属性 确实这个比之前的版本号简化了一下.只是你肯定非常好奇.究竟编译器给我们做了哪些东西呢? 1 class Student 2 { 3 public string Name { g ...

最新文章

  1. 动态更新ViewPager?
  2. spring中事务的设计和实现
  3. Oracle序列使用:建立、删除
  4. 【PAT乙级】1048 数字加密 (20 分)
  5. 计算机丢失tlps,win7系统下PS提示计算机丢失tlpsplib10.dll文件的解决方法
  6. linux经常使用解压缩命令
  7. Codeforces Round #664 (Div. 2)
  8. 为Cubieboard打造完美Debian系统
  9. UVa 11998 破碎的键盘(数组实现链表)
  10. gitlab工作流程简介
  11. qzone.class.php,PHP QQ登录接口应用_PHP教程 - str_repeat
  12. Mac OS 常用终端命令(附代码)
  13. 【技术分享】H5小游戏开发入门指南
  14. 如何在谷歌浏览器官网下载谷歌浏览器32位、64位或其他版本最新的离线安装包?
  15. 计算机显示器一半有阴影,[显示器图标有影子怎么解决]电脑显示器有字迹影子...
  16. 模拟版图layout能否转数字IC后端实现?
  17. 八百呼的手机录音系统,一个划时代的进步
  18. Oracle数据库的基本使用和高级查询
  19. CentOS 7 安装 OTRS工单提交跟踪系统
  20. [前端基础] JavaScript 进阶篇

热门文章

  1. 我对FastFCN的理解
  2. Android主题与样式
  3. 余弦向量相似性和SIFT算法在股票相似性中的使用(1)
  4. Exception和Error有什么区别
  5. Bootstrap(三)下拉菜单和分页器
  6. python是第几代编程语言-Python语言目前是世界上第几流行的计算机编程语言?
  7. JLU吉林大学21级软件数据结构上机实验(1)
  8. 100 道 JavaScript 面试题及答案(下)
  9. 关于就业、职业、事业【看完之后你的思路会清晰很多】一位资深经理人的职业生涯感悟
  10. ubuntu里各类文件夹的介绍