首页天道酬勤坚持把骚年,Android适配布局

坚持把骚年,Android适配布局

张世龙 06-22 00:00 126次浏览

基本情况是我的普通本科,安卓开发职场。

本文主要是对秋季面试经验的总结,最终获得了百度、腾讯的报价。

主要包括阿里三面、腾讯四面、百度三面、网易三面、美团一面。

我为什么想去字节跳动,其实我的计划里没有这次的工作变更。 只是,4月偶然得知字节跳动上海要搬到合川路的地铁站附近,我突然心动了。 要说为什么,那是因为我家离合川路的地铁站只有10分钟的步行距离。 宇宙条件待遇很高,评价很好,也就是说,只要我能来这里,人生中最幸福的钱多,很少离家的三角我就拿不到两个人。 所以5月份我开始偷偷准备面试标题。 为了能过上以后早上8点半起床,悠闲地去公司也不迟到(可能还是来得早的人之一)的生活。

当然,所以我想去字节跳动。 在换算成你们自己的时候,你们也要考虑你们为什么想做别的工作,想去哪个公司。 为了工资? 环境? 平台? 还是大公司的名字? 请记住,这对任何一个都可以。 钱要在不伤害感情、目标明确、心里踏实之后,才能围绕这个目标做一系列的准备。 面试中,每当面试官问我为什么想来字节跳动,我就坦率地说离家很近。 另外,他说如果这次不能见面的话,可以准备一下,过一会儿再面试。 反正你的公司就在我家旁边。 我可能三年五年没跑了。 哈哈。

在这方面是OK的,即使不去面试也没关系,所以我觉得我在面试时的发挥也很好。 这本身就是一个互相选择的过程。 而且,在这个过程中,公司方面是相对固定的。 因为他的招募标准没什么变化。 想想我经常用来为难别人的例子吧。 我经常和人说话。 英语对技术开发很重要。 阅读最新的技术文件需要英语,有些翻译不准确。 要理解什么意思可能需要读原文。 有人到时候会告诉我。 啊,很遗憾我的英语不太好。 这个时候会回来。 没关系。 你现在英语不好不是你的错。 但是,如果我一年后,甚至两年三年后给你英语怎么样? 如果你还跟我说你的英语不好,你得调查一下自己的问题。 你不想学英语,为什么英语会变好呢?

类比一下,如果你不想去这家公司,你怎么能来这家公司? 如果你真的想去公司的话,目前你可能暂时还没有达到要求,但没关系。 如果你知道别人要求什么,你可以认真学习,准备,一年后面试,两年后面试,三年后,五年后再面试。 人最害怕的不是没有达到目标,而是没有真正的目标。 所以,在跳槽之前,要想一想为什么,尽早开始准备。

我准备了什么? 其实我很久没有正式面试过了。 三年前从几个云搬到GIO的时候,简历的相关技术太匹配了,所以基本上和CTO聊了一下就确定了过去; 之后,回到数云的时候,和总监喝了咖啡回来了。 也就是说大约五年间,我都没有正式接受过面试。 所以在准备扔字节跳动之前,我投了几家公司做热身活动。 请记住,这个时候不需要心理负担。 因为自己候选人的面试成功的可能性很低,所以能面试的合适的候选人也很乐意看到。 另外,万一你想跳槽,但心里的公司不露面,热身活动的公司得到了邀请,你也可以考虑去看看。 而且,这个时候,你没有任何心理负担。 反正是来面试的,面试时的发挥可能也会变好。 因此,最终拿到的报价可能会比最后想去的房子好。

当然这里面不包括我。 我在第一次面试中被血虐了叔。 参加中间件竞赛时,我用的netty做的实现。 我个人觉得对netty还是有一定了解的,结果被面试官直接写了netty的源代码结构。 包括哪个主要的类和名字,以及彼此的关系……在工作项目中使用kafka做消息队列,缓冲流量,保护系统。 结果,我直接向他解释了kafka的存储结构……在比赛中,我通过各种手段将程序取消了GC。 结果,各种GC算法的原理和应用场景直接让我说了……PolarDB大赛我们自己写了KV。 目标是RocksDB数据库。 结果让我说明了RocksDB的索引结构……

当然,基本上我知道他听说了,应用场景在哪里我很清楚,但每一个细节,都有点圈。 虽然确认了细节,但是稍微看一下总会有办法的,但是不能忍受面试的时候,我是不会开口来的。 这时,我仿佛成了我年轻时的kndsw,突然身边出现一只聪明的鹤对我说。 “kkdc先生,你的武功花样很多,但我总是说同样的话。 召集大家的房子很棒,但无可反驳。 你最擅长的到底是哪门子功夫? 用什么武功对付踏实的日记本夫妇? ”。 是啊,我的知识很广泛,各种应用框架的新技术你可能听说过,我最擅长的是哪个? 我深深知道我最擅长的是Scala和Akka、Play、Lagom等,但是放不下架子,谁也听不到哦叔叔。

到了这个地步,我就像kndsw一样帅,但是这个时候也要整理一下一生所学的东西,找出优缺点,考虑面试的时候放箭。 所以,在第一次预热面试后的一周,我基本上在整理我的知识结构。 我用以下结构制作了思维导图:

JVM相关运行时结构GC算法JVM调优编程语言ScalaJava数据结构和算法表、栈、 队列树散列优先级队列排序高级数据结构并发编程Java内存模型基本工具无锁并行反应工具微服务设计服务管理中间件分布式缓存消息队列RPC数据库关系型数据库NoSQLNewSQL机器学习算法

消息队列什么的,我都仔细写了一下;Java语言太简单就没弄,数据结构稍微看了一下感觉脑海里面尘封很久的记忆忽然就被唤醒了,所以也没咋做笔记,微服务相关的太熟没弄,推荐算法太难了也没有弄;数据库相关的内容太多了,也没弄。但是大体来说索引结构在这里,拿到xmind之后,你可以按照自己的知识结构体系将其补全或者修改,然后学而时习之,甚至在面试之前也可以稍微看看加深一下记忆。(想要获得我的索引笔记,关注我的公众号,后台回复"知识索引"即可。)

这之后我就进行了第二次面试。第二次面试技术相关的问题其实就没啥太大的问题了,主要考验我的是说话技巧相关的事情。我这人有点毛病,想的太多,想要做的事情太多。这些其实没啥大问题,但是我不确定的事情我也喜欢和人说,还不分场合地就和人说了。比如,我面的是中间件团队,但是我终面面试的时候却说我因为之前搞推荐算法对深度学习产生了兴趣,想要今年考个在职研究生学一下深度学习。可其实,这个时候我说这个干嘛呢?脑袋有点抽抽的吗?并且他问了我一个手写代码的题,我想了半天没有想出来。问题是如何去算根号2的值。我的第一反应很快,jsdtd迭代法嘛!但是他说让我在纸上把代码写出来的时候,我就一直在想办法回忆jsdtd迭代法是个什么鬼,应该怎么用来算根号2。然后一直在纸上推演导数啊什么鬼的……直到他提示我这个不是一个数学问题,二分查找就能算出来的时候,我才心不甘情不愿地开始弄二分查找的写法(内心OS:jsdtd迭代法肯定比二分查找好的呀!为什么不给我时间回忆一下jsdtd迭代!)。这个时候又暴露了我一个问题,我好久没有手写代码了。没有IDE的时候,我基本上啥都不是……写了半天勉勉强强地弄了个版本出来,估计也不是bug free的。所以,最终这个公司的offer也没拿到。辛苦为我推荐的普架了。

这之后我又知道了我出来面试的几个缺点。首先就是要合适地说话,与面试无关的话题不要扯;其次就是我得练习一下手写代码了。不至于要刷题,但是问到什么必须能至少写出个大概吧。所以我就登录了我好友爱听歌的舞蹈个人制作的网站 AlgoCasts, 看了一下他精心录制的小视频。然后跟着敲了一下代码。这之后,我就开始找人帮我推字节跳动了。

字节跳动面试体验

字节其实我面试了两个职位。第一个职位的一面感觉挺好的,面试官很亲和,问的问题也蛮到位的,然后留给我的发挥空间也蛮大的,所以顺利过了。二面的时候就有点聊不来了,而且越聊越感觉职位不合适。所以后来朋友帮我重新推了一个职位,就是我现在所在的数据平台部门。一面的面试官又年轻又高大又帅气,而且基本上是针对我的简历问的问题。当然,第一个问题让我讲Akka的时候,我是真的呆了。完全不按套路出牌呀!我从来没有遇到过有人会问我Akka的!!!怎么会有人问我Akka!!!内心一阵狂喜和激动之后,我先收拾了一下心情,慢慢整理了一下自己脑海中一直在跳着举手喊着"讲我讲我"的Akka特性。于是先从线程模型开始讲起,讲了它的M:N实质,Actor模型依赖的消息传递模式,层级结构划分的监督职责,让它垮的失败处理,Akka集群支撑起的横向扩展,等等等等。然后围绕着Akka又问了一些小问题,基本很顺利的过去了。后来又问了一下缓存相关的内容,其中讲了一个缓存雪崩的问题我一时半会儿没有反应过来。问题其实很简单,就是忽然有一堆请求访问同一个key,而这个key在缓存中不存在。如此所有请求就会同时去访问数据库然后又同时去更新缓存。这样的缓存雪崩效应应该如何解决?这个问题听起来其实很熟很熟很熟的,但是当时我脑袋短路了没有想起来。后来想起来原来Akka-Http-Caching(以前的Spray-Caching)就是专门为这种情况服务的。老外给的说法是这种问题叫做惊群效应,讲的是很多请求在第一个请求完成之前,一起访问同一个键(This approach has the advantage of taking care of the thundering herds problem where many requests to a particular cache key (e.g. a resource URI) arrive before the first one could be completed.)。文档上说的This approach指的是缓存的时候,不要缓存一个值,而是一个Future[T]。这样,第一个请求获取值的过程也被缓存下了。后续的请求就会访问到这个Future,然后可以向其注册回调,等待缓存动作完成再完成回调。当然,这个没有答得特别好也没事,后续又问了我一下关于JVM相关的一些东西,最后手写了一个算法题。然后一面顺利地就过了。

之后二面的话基本也是围绕我的简历来问的,讲了一下当时做的推荐算法的原理,讲了一下Spark的基本原理,然后最后做了一个算法题,然后也顺利过了(其实还有一些其他问题,但是我忘了问的是什么了……)。当然这个算法题的实现并不是最好的。题目内容是26进制的加法,其实要涉及单个字符的加减和进位的处理的,这样实现下来细节就要处理好多东西,还很有可能出错。所以我取了个巧,我先把字符数字都转化成了整型,然后整型加减得到结果,然后再把结果转化成了26进制字符。虽然结果不是最优的,因为数字大了肯定会溢出的嘛。但是起码还是做出来了,所以二面也顺利过了。

三面的时候也是先围绕着我的项目问了一些相关的问题,所以答得蛮平淡的,但是也还行。然后他问了一下我如何做流量控制。问我流量控制哎!!!然后,我又强行按捺下了内心的喜悦,将《反应式设计模式》的第十六章流量控制的内容大致讲了一遍。也许就是给了这样一个我发挥的空间,所以我第三面也很顺利地过了。没多久就是HR面试大致谈了一些技术之外的问题。

HR面我就中规中矩了。当时面完感觉就稳了,但是等了好久好久还没有跟我沟通offer的事情,等的我有点难受了……之后HR联系我说,还要给我加面试,说团队老大要面我一下。原本字节面试一般3+1就OK了,然后突如其来地加面试让我感觉有点忐忑,所以后面的面试发挥没有前面好了。其实后来回想一下,我可能是以为前面面试表现不好,不能给我确定offer,才会有后来多的面试的。所以当时心态不好,答的感觉也没有之前果断。后来第五面完了以后,团队老大还是不确定,还要加一面交叉面试,这个时候我就豁出去了。无所谓,面上面不上没关系,反正字节跳动在我家旁边,只要庙不搬,我就进得去。所以最后一面跟隔壁leader聊的时候相对来说还好一些。问题没有问啥特别的,就是仔细问了下我最近做的一个项目,优点在哪里,缺点在哪里,难点在哪里。然后顺着难点来进行扩展,为什么是难点,怎么解决,有哪些方案,这些方案有哪些优缺点。幸好我平时工作还是有思考的,所以最终答的还不错。于是终于到了6月10号左右,HR和我确定要发offer了。

分享读者

作者2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。

被人面试过,也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!

我们整理了一份阿里P7级别的Android架构师全套学习资料,特别适合有3-5年以上经验的小伙伴深入学习提升。

主要包括腾讯,以及字节跳动,阿里,华为,小米,等一线互联网公司主流架构技术。如果你有需要,尽管拿走好了。

如果你觉得自己学习效率低,缺乏正确的指导,可以点击加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧!

群内有许多来自一线的技术寒冷的芒果,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。

说,眼光,格局,长远发展的方向才是最重要的。

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。

ios和android前景,android开发就业前景