乐趣区

关于android:从门外汉到腾讯Android高级研发一个半路出家菜鸟的艰难逆袭之路

我是在去年 3 月份退出腾讯公司,目前是腾讯公司某技术部门外面的一个小负责人,年薪月薪大税后概 30K,谈不上如许厉害,但在回忆本人科班出身学习编程,从一个销售到当初终于进入中国互联网顶尖公司,还是有些许感叹。

明天写这篇文章,算是对本人过来一个总结,也分享本人的职业之路。

(一)初入编程

我是 12 年大学毕业,我毕业于一家十分个别本科院校,大学生存糊里糊涂,却有无比的幸福,对我来说,那四年是属于魔兽世界的。

有人问过我,节约那 4 年工夫后不后悔,我都会无比动摇的说,不悔恨,那四年我真的幸福。然而在夜深人静,扪心自问,到底后不后悔?只能说有点可惜,如果过后可能抽出一些工夫来,做点更有意义的事件,可能生存会更加不一样。

我当初对游戏的态度就是:我会劝很多学弟学妹,最好别玩游戏,玩游戏真的没有意义,除非你未来打算走上电竞,当一个电竞选手,不然很浪费时间,你用游戏的十分之一去看书,播种到的都会比游戏外面失去的要多。

大学毕业后,我第一份工作是销售。

我的本业余不提也罢,因为我当初本人都不晓得那是个什么货色,不过我还是拿到毕业证书。因为先天的不自信,我抉择了销售这个岗位。

这是十分多大学毕业生,刚毕业的时候都会抉择的岗位,在这里老气横秋,劝一句:如果你真的喜爱销售这个岗位,那么抉择销售必定没问题,如果你只是因为不自信,那么就大错特错,去尝试投点简历,做好面试筹备,可能会有意想不到的播种。

我抉择销售,是一条弯路,那段岁月特地好受,很大水平是因为我性情的关系,再加上不喜爱销售团队常常的打鸡血和洗脑,最初来到这个销售这个行业。

但,这是十分难的一条路。

不干销售,那么我能干嘛?那几个月我始终在思考这个问题,那段时间我十分迷茫,我换了好多家公司的销售岗位,做一段时间,再到职,再去做销售,再辞职,犹如一个死循环。

直到我一个敌人让我尝试学习 Android 开发。

那是一个星期天,他来找我聊天,那天早晨,咱们在农大旁边的闽江,一边看着隔壁技校妹纸的大白腿,一边喝着酒,痛哭流涕,哭什么咱们不晓得,大略可能兴许,咱们始终没做好独立面对这个社会的筹备,以至于到处碰壁。

反正,就这样,在和他聊过后,我开始学习 Android 开发。

最开始,我对 Android 十分恐怖,因为我感觉学习编程好难好简单,那么多稀稀拉拉的代码,让人望而却步。

初学编程,最重要的就是“驱动力”。而这个“驱动力”是由两个货色带动的,一个叫做“勇气”,一个叫做“趣味”。

一旦你对这门语言实用性产生趣味,那么学习起来真的不难,另外一个就是勇气,别胆怯碰到难的常识,肯定要想方法尝试挑战,如果真的感觉本人无力解决,那么就看视频,买书,求教他人。

在那段时间内,我学习编程的激情前所未有的低落,就跟当年玩魔兽世界一样,十分空虚,我本人可能感觉到本人缓缓变强了,而这种变强不是依靠在一个账号上,而是我本人变强。

(二)找工作

对于我这种自学编程的人来说,找工作相对是一个十分十分大的挑战。

然而,我曾经做好了再也不做销售的信心,所以我过后第一个指标,就是不论工资多少,不论公司如许不好,先找到一份工作再说,至多,先入行。

虽说我曾经有了足够的心理准备,但事实更惨烈,整整一个月,一个面试告诉都没有,那个打击是真的很大。

不过,打击归打击,该投的简历还是要投。

在一个周四的下午,我接到一个面试告诉,至今我都记得,过后我的手相对在颤动。

那是一家手游行业的公司,要做一个游戏 APP,过后这家公司的 Android 开发忽然就不干了,再招人又来不及,刚好看到我投简历,就打电话叫我过来面试。

面试过程很短,面试我的是技术部经理,问了几个简略问题后,说:“你什么时候能够下班?”

我说:“随时都能够。”

他说:“那你当初就下班吧,那边是你的工位。”

就这样,我失去第一份编程工作。当初回想起来,我可能失去这份工作,最大最大的因素,就是保持。

在这个过程中,我做了很多致力,比方批改我的简历,理解每一家我投递公司的我的项目须要,再认真写好我的每一份投递的求职信。

尽管,在过后外人眼中,那样其实没有什么意义,然而我晓得,只有去做,就肯定有意义。

(三)职业进阶

对程序员来说,最重要肯定是工作教训和我的项目教训。

有人说,不对,应该是学习!其实这个答案和我下面给的答案是一样的,因为当你在积攒你的工作教训和我的项目教训的过程中,其实就是一个学习的过程。

我的第一份工作,对我来说,是通过我的项目来学习的,而且这是最无效的!这是很多在自学编程的小伙伴,没有意识到的问题!

大家学习的理论知识都一样,然而最疾速、最无效的形式,肯定是多敲代码,多看他人的代码。

过后,我花了大略 2 个月工夫,疾速成长,当然这得益于我的勤学好问,碰到你无奈了解的问题,肯定要先尝试思考,而后再去求教别人。

过后如果我的项目十分焦急的状况下,请立刻把问题抛出来,求助别人,因为你是在为公司的我的项目负责,而不是集体的自我学习。

每天来回的一个小时外面,足够我看完一些技术文档。

当我想尝试其余语言基础知识,或者做点好玩的货色,这段时间对我来说十分重要。

因为我在回家后,就晓得我应该做什么,怎么做。

会不会很枯燥无味?诚实说,必定会!已经有一段时间,我在公交车上每天看的是“今日头条”,今日头条的确十分棒,他自身的算法太可怕,始终推送你喜爱的内容,以至于起初很长一段时间,我都没敢关上力扣学习。

好在我这人幡然醒悟的比拟快,因为我很清晰的晓得,我要的是什么,那就是让本人变强,因为你变强后,你才有资格失去你想要的。

有些人只会埋怨,怨天怨地,我想说的是,在那个过程,你曾经节约了很多工夫,比方看完一篇 python 的爬虫文档。

始终放弃海绵体的排汇常识,不仅让我本人看到本人的提高,也让我疾速退职场外面怀才不遇。

我在第一家公司呆了大略 2 年后,我跳槽了。

那个时候的我,十分自信,我有有足够的资本自信,因为这两年,我始终在提高,kotlin、第三方开源框架、framework、高级 UI、数据结构、NDK、flutter 等等,还有其余编程语言我也有所涉略。

这边给各位小伙伴一个倡议:

肯定是中高级的 Android 开发,才有市场,肯定要本人动手做点小我的项目,再去找工作。

另外,Android 的职业规划之路有很多,全在于你是否违心持续学习,因为前面可拓展的技术太多了,比方下面提到的 flutter。

(四)入职腾讯

我在跳槽后,进入一家很出名的网络公司,那个时候,我的程度,离进入腾讯的技术员,还有肯定的差距。

次要的差距在于,基础理论常识!

越是大公司,越器重程序员的基础知识,这也是非科班出世程序员的致命痛点。

那么是否有方法补救,当然有,那就是:看书、刷题库。

看书和刷题库是最无效补救基础知识的形式,我本人整顿了一套面试题,外面有历年各大出名网络公司的面试题,百度、腾讯、阿里巴巴、美团、滴滴等等都有,其实这些公司的面试题,都是十分根底的常识。看到这些题,你就晓得我花了多少精力了。

再跳槽到第二家公司,我是咱们公司 Android 开发的小领导,在忙碌的工作中,每天我必然抽出工夫持续学习。

有很多程序员容易满足,不会被动去学习,直到他们须要用到的时候,才开始翻书学习,这种态度不是说不行,只是在我看来,有点懈怠了。

程序员是一个须要一直学习的岗位,同时程序员也是一个高薪的岗位,所以这样容易滋生懈怠,其实这样未尝不可,只是如果你想站在更高的平台,那么不要进行学习,哪怕每天只是学一点点。

前面的事件,牵强附会,19 年,我开始布局本人入职腾讯的打算。

除了刷腾讯公司每年的面试题之外,我还认真的理解腾讯技术部门的架构,以便清晰的晓得,如果本人要进去,本人应该负责哪些事项,同时,这些事项须要领有哪些技术的程序员。

在所有做好筹备后,我去面试的那天,熟能生巧,我丝毫不感觉我在面试一家如许厉害的公司。


上面分享我的面经:

一面(1h):

  1. 谈谈你学习过的架构模式 MVC MVP MVVM
  2. 一个 Union 类型,共有一个 int 类型、Float、Double 类型的字段,请问在 32 位的 CPU 创立时须要占用多少字节?
  3. Union 和 Struct 的区别
  4. 谈谈你所理解的 C 语言的内存治理
  5. 说说你理解的程序设计模式,晓得多少说多少
  6. 说说 TCP 和 UDP 的区别,你认为 QQ 的实现是应用 TCP 还是 UDP?
  7. 谈谈你理解的 C 语言的编译过程

8 . 过程和线程的区别

  1. 谈谈你对 Viper 架构模式的理解
  2. Fiddler 的工作原理解释一下
  3. 死锁产生的起因以及解决办法
  4. 过程的调度算法有哪些,别离解释一下?
  5. Android 程序共享数据的形式有哪些?
  6. Android 的性能优化
  7. Handler 和 HandlerThread 的区别
  8. 八皇后问题理解过吗?具体怎么实现的?
  9. 解释一下异步编程,说说它的利用
  10. Android 利用的启动过程

二面 (40Min):

1.  多线程理解吗?

  1. 多线程如何实现通信?
  2. 多线程如何实现线程平安?
  3. 多线程如何实现同步机制?
  4. 过程间的通信形式?
  5. 谈谈你对架构模式和设计模式的了解。
  6. 当初让你设计一个字典,说一下你的设计思路。

三面 (3.5h):

  1. 请你画出 MVP 架构图,并解释一遍它的运作流程。比方网络操作
  2. 解释一下页面展现数据获取的数据起源。
  3. 多线程会导致什么问题,应该怎么解决?
  4. Android 过程的优先级是怎么的?
  5. 说一下 Activity 的生命周期
  6. onStar 和 onResume 办法的区别是什么?什么时候用 onStart,什么时候用 onResume.
  7. 说一下冒泡排序的区别?
  8. 冒泡排序最优的工夫复杂度?
  9. 一棵没有特定程序的二叉树,如何寄存在文件中?
  10. 手写代码,给一个 int 的数组,将其挪动 k 位(应用替换的思维)。如 array = [1,2,3,4,5], k = 2, 则挪动后的 array 为 [4,5,1,2,3]
  11. 设计 QQ 传文件性能,并画出模块设计图。
  12. 说一下防火墙穿梭的实现原理
  13. 加密算法和加密原理
  14. Https 实现原理
  15. 手写代码,无限大整数转 16 进制
  16. 解说一下登陆时明码加密过程
  17. 推理题

宴会上,人们都带着红色或者彩色帽子,其中至多有一个人带彩色帽子,每个人都能看到他人帽子的色彩,看不到本人帽子的色彩。假如每个人都足够聪慧,如果在熄灯的时候你感觉你本人带了彩色帽子,就鼓掌。第一次没人鼓掌,第二次没人鼓掌,第三次有人鼓掌。请问有多少集体带了彩色帽子。

Hr 面 (20Min)

1. 自我介绍

  1. 你认为你身上最显著的三大特色是什么?
  2. 产品、薪资、集体倒退、平台、地区等等  抉择你认为最重要的三个?并解释为什么?

4. 你除了腾讯还有面试别的公司吗?为什么抉择腾讯?

5. 家住哪,偏向在哪个城市工作?

6. 介绍一下你的社团活动经验,说说印象最粗浅的一次。

7. 说说你的实习经验

8. 你看待加班的认识。

9. 说一说你接触过腾讯哪些产品,并说说他们的特点。

10. 你如何对待腾讯、百度、阿里巴巴这些公司


最初

其实进入腾讯公司,只是后果中的“果”,而所有的“因”,是我之前的积攒。

想要失去多少,势必就得付出多少,这是我一路上来最大的感悟。

在筹备期间,我刷了大量的 Android 大厂面试题, 在前段时间做了一个整顿,内容更加具体了:

1.2020 腾讯 Android 面试真题解析

2.2017-2020 字节跳动 Android 面试历年真题解析

3.2020 阿里巴巴 Android 面试真题解析

4. 一线互联网三方源码高频面试总结

5.Android Framework 精编内核解析

以上内容均收费分享给大家,须要完整版的敌人,点这里能够看到全部内容。

有时候,抉择比致力更加重要,时机比奋斗更加重要。然而,机会只留给有筹备的人。咱们只有时刻筹备着,能力在机会到来的时候,去抓住它。

我很侥幸的是,当我筹备好的时候,机会来了。从此以后,我变成了一个置信运气的人。

我置信,越致力,越侥幸。

退出移动版