Android最强进程保活黑科技实现原理解密及方法,吐血整理

背景

经常有网友在知乎问答提两个问题:“现在学习移动开发还有前景吗?””开发还有什么可以研究的?“。网友回复:“现在还学移动开发?如同49年加入国军!”其实这两个问题对应着同一个现象,无论是准备入行或刚刚入行,还是比较资深的开发者,对于移动开发职业的未来,都有一些迷茫、一些焦虑。为什么会这样?

近年来,以深度学习为代表的核心算法突破,计算机计算能力的提升以及移动互联和云计算技术的发展,AI技术的发展开始切实影响到人们的生活。现阶段,人工智能技术已经运用在智能安防、智能交通、金融服务业、医疗行业、工业以及移动互联网等众多领域,并在各行业中引发一场大变革。

两年前,众多企业家在乌镇讨论如何适应移动互联网,而今天移动互联网时代已经结束了。有关数据预测显示,2017年中国移动互联网用户增速在3.5%左右,2018年降到不足3%。而在2013年,这个数字是将近15%,移动互联网人口红利带来的增长已见顶。

所以这里的结束不是说不用手机上网了,而是移动互联网市场进入相对平稳的阶段,互联网人口渗透率超过50%,这个风口已经没有可能出现独角兽。

面试经历

网易游戏实习生招聘很神奇的是整个就一轮面试,HR面是不存在的。面试是视频面试,用的牛客网平台,大概面了一个小时多一点。面试主要就是把计算机四大专业课轮番问了一遍,问了Java语言基础,最后还问了一个算法题。四大专业课问的也就是那些基础问题,不过有些地方问的很深,基础的像问到了各种排序算法的最好、平均、最坏时间复杂度、线程和进程的区别、cache工作原理、计算机网络七层模型;问的深的像问到了进程中有多少个栈、线程中有多少个栈、阻塞是指进程阻塞还是线程阻塞、一台服务器上TCP和UDP监听端口号能不能相同、服务器80端口和客户端建立连接后会不会切换端口等。

Java语言基础这里有个小插曲,面试官没想到我不会C/C++(因为岗位介绍里面有写要会C/C++,但五个要求里只要求满足任意两个就可以投递)只会Java和Python,于是他就只好问了一些Java语言基础的问题,比如Integer和int的区别、GC的工作过程等;还问了Python的装饰器的原理,我就说了说面向切面编程相关的;最后面试官觉得不问C/C++不行,然后问我知不知道C/C++里的虚函数,被我一口回绝了。

最后问了一个字符串循环移动的算法题,算是一个经典题目了,直接口头说三次翻转就好了。最后问了面试官说岗位介绍里要求会C/C++,但我看招聘网站介绍里有提到Python,实际中是用哪些语言呢?面试官说C/C++主要用在游戏引擎那块,开发主要还是会用Python。虽然整个下来有些题没有答上来或者答错了,但整体来看还是答的很好的,反正对我来说已经发挥到极限了。面试完就感觉这个offer基本要到手了。

等了两周多才收到了网易游戏的offer, 但也算是我实习生招聘收到的第一个offer,也是很有分量的一个了,自此我的实习生招聘就有底气了。

腾讯

腾讯正式批次有统一的笔试,笔试用的北森的系统,奇烂无比,编程题测试用例要自己写,考试的时候线上编译器竟然还坏了。另外腾讯的题目也很奇葩,我一个Android开发选择题里十题就有九题是C/C++和Obj-C,简直是蒙着眼睛在选。不过幸运的是腾讯向来以笔试不刷人著称(我周围的几乎全都过了腾讯的笔试,但根据我之后在腾讯的leader说,其实还是有分数线的),笔试过了一两周就收到了南京现场面试的通知,在南京水游城假日酒店,部门是深圳SNG的增值产品部。

面试经历

正式一面大概40分钟,主要就是照着我的简历里的项目问,时不时拓展到计算机基础。和Android相关的似乎并没有问,拓展到的计算机基础知识比如就有HTTP是基于TCP还是UDP的、虚拟内存的意义和工作过程、死锁产生的条件等,问的很多,但都很基础。最后还问到了我简历上写的Android相机开发系列博客文章,问我怎么想到写文章分享的,我说因为自己就是这么踩坑一步一步走过来的,希望能帮到新手能少踩点坑,他表示赞同。最后他问了我一个算法题,就是链表转置,正好我前一天晚上刚看了的,就一口气写了出来。最后我问了面试官他是哪个部门的(因为我正式批还是投的上海IEG),面试官回答说是SNG的增值产品部。因为回答的很好,跟面试官全程有说有笑,所以感觉一面十拿九稳了。后来实习的时候,这个面试官就是我的leader了,也就是带领大约10个人的Android开发组组长。

一面当天晚上就收到了二面的通知。正式二面大概40分钟,主要让我介绍了我的项目,又出了几个题让我做。项目就是让我介绍我科研做的那个流式二维码数据传输系统,我介绍的时候面试官听的很仔细,让我详细介绍了拍到的二维码是如何定位、采样和识别转换成二进制流的。然后问我传输速率是多少,我大概说了个数结果面试官拿笔在算怎么得到的,然后出了点岔子,传输速率就算是理论值都达不到我说的数,场面一度十分尴尬,不过还好我说后来我们用了彩色二维码,传输速率成倍提高了,他也就没有继续追究。然后面试官问了我内网设备访问外网服务器的访问过程,我就仔细解释了NAT的工作原理。

然后问我假如现在有很多手机号,给出一个手机号如何能快速查找到这个手机号是否已经存在,我就用笔和纸仔细解释了Trie树;然后他问我为什么不直接用Hash,我又用笔和纸跟他详细说了Trie树相比Hash是如何节约空间的。最后他问了我一个概率题,大概就是三个蓝球一个红球求任意拿两个球只有一个红球的概率,初中的古典概型题;然而我当时脑袋抽风了竟然想不出来,就跟面试官说我穷举可不可以,他说能做出来就好,于是我就真开始穷举了,然后面试官就看不下去了,说你这么做要做到什么时候;不过在脑袋空白了几分钟后还是慢慢做出来了,有惊无险。

最后他就问到了我拿到了哪些offer、女朋友在哪、想在哪里工作、介不介意去深圳的问题,我说我更想去上海(因为腾讯在上海有分公司),实在不行也能去深圳。然后面试官就打电话给HR问后面的面试流程,听电话里大概意思是还有HR面,但HR明天才到南京。这时候我感觉二面也十拿九稳了,于是趁最后的机会直接问面试官说“不能今天就直接HR面吗”,面试官也老实回答说HR明天才到,安排你明天HR面。后来实习的时候,这个面试官就是我们的部门总监了,就是我leader的直接上级。

风平浪静中等到了第二天的HR面,让我见识到了套路可以玩的有多深。HR开始就跟我说,面试过程中可能她会看电脑敲键盘,但这并不代表她没听我说话,只是她在做面试记录而已。然后HR面开始,先自我介绍,然就就是问一些常规性的问题,比如生活中遇到的困难之类的。然后问我知道腾讯的哪些产品,让我说出十几个,最后简直都要说的山穷水尽了。然后问我最近在看哪些书,我说在看设计模式,然后简单介绍了下说有十几种设计模式,对我写代码能力有很大帮助;然后她问我具体有多少种,我说12种吧,然后她就让我说出这12种!于是她步步紧逼,我绞尽脑汁想,也只说出了8种,最后她妥协了,说“那就认为你是真的看了的吧”。

然后问我有哪些offer,我说有网易游戏offer在路上了,她就问我怎么看待网易游戏的offer、杭州和深圳怎么考虑,我当然是夸奖了腾讯一番。然后她问我可不可以看看我的手机上有哪些APP,然后我把手机给她,她仔细滑仔细看,最后也没说啥(当时我手机上腾讯的APP似乎只有QQ和微信,网易家的倒挺多,但是没有游戏)。总之呢,当时的气氛真是难以形容,就像一眼就被HR看穿了,根本躲不了。最后问了HR说最早啥时候有结果,HR说要等大概两周,等全国的线路面试结束回深圳了才会作出决定。

后来就是等了不到两周就收到了腾讯的实习offer,不过当时也已经收到了网易游戏的offer,然后纠结的觉都睡不好,这个后面再说。

最后

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

img

上述高清技术脑图以及配套的架构技术PDF可以点击我的腾讯文档免费获取

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!!
  • 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。

当我们在抱怨环境,抱怨怀才不遇的时候,没有别的原因,一定是你做的还不够好!

己想要的,因为我们很辛苦,我们应得的。

当我们在抱怨环境,抱怨怀才不遇的时候,没有别的原因,一定是你做的还不够好!

你可能感兴趣的:(程序员,android,移动开发,面试)