网站布局分类,怎样维护自己的网站,上海建设工程安全监理网站,python做的网站我#xff0c;来自大山。 我#xff0c;不甘平凡。 笔者80后#xff0c;出生在江西一个偏远的山村。虽然出生时已经不是那个温饱都是问题的年代#xff0c;但是也谈不上有个幸福的童年。家里很穷。幼儿园并没有读#xff0c;因为家里觉得花那个钱没有必要#xff0c;小学… 我来自大山。 我不甘平凡。 笔者80后出生在江西一个偏远的山村。虽然出生时已经不是那个温饱都是问题的年代但是也谈不上有个幸福的童年。家里很穷。幼儿园并没有读因为家里觉得花那个钱没有必要小学才开始学拼音字母。我的童年就是和我的姐姐弟弟在山中的梯田里放牛抓泥鳅割鱼草。
父亲在广东打工母亲一个人在家里带着我们三个孩子。种种原因在我从小学开始到高中毕业我的学习一直很差。
直到我高考成绩出来的那一天。我妈看着我不堪入目的成绩哭成了泪人。我心都要碎了。也是从那一天开始我决心要改变这种现状。我要走出这个山窝窝。
为什么想去字节跳动
实际上这次的工作变动并不在我计划中。只是在四月份的时候偶然得知字节跳动上海要搬到合川路地铁站附近我就忽然心动了。为什么呢因为我家距离合川路地铁站步行只要十分钟。本身宇宙条待遇高名声在外也就是说只要我能来这里的话人生最美满的钱多事少离家近的不可能三角我能拿俩。所以在五月份的时候我就开始悄摸摸地准备面试头条了。为的就是以后可以过上早上八点半起床然后慢慢悠悠走到公司还不迟到可能还是很早来的人之一的生活。
当然这是我为什么想去字节跳动的原因。换算到你们自己的时候你们也要想一想是因为什么想要换一份工作、想要去某个公司。为了薪资环境平台还是大公司的名头记住不管是为了哪一个都OK的。谈钱不伤感情目标明确心智坚定以后才好围绕着这个目标做一系列的准备。面试的过程中每次面试官问我为什么想来字节跳动我都是直截了当地说离家近还说假如这次面不上准备准备过段时间再面试好了。反正你们公司就在我家旁边三年五载的可能都跑不掉哈哈。
因为这种面上OK面不上也没事的心态所以感觉面试的时候我的发挥也好一些。本身就是一个互相选择的过程而且这个过程中公司方相对来说固定一些因为他的招人标准不太可能会有太大的变化。拿我经常用来怼人的一个例子来打比方我常常和别人说搞技术开发英语很重要。你需要英语来看最新的技术文档并且有些翻译并不准确你可能需要看原文才能理解什么意思。有的人当时就会和我说哎可惜我英语不太好。这个时候我会回没事你现在英语不好不是你的错但是如果我一年以后甚至两年三年以后再来问你英语怎么样要是你还和我说你英文不好的话那你就得查一下自己的问题了。你根本就不想着学英语英语怎么可能会好
类比下来如果你根本不想去这个公司那你怎么可能来到这个公司如果你真的想去一个公司可能现在这个时候你暂时不满足要求但是没事只要咱知道别人是啥要求咱认真学习好好准备一年以后再面试两年以后再面试甚至三年、五年以后再来试试都可以的。人最怕的不是没有达成目标而是没有一个真正的目标。所以换工作之前你要想清楚为什么并且提前开始准备。
我准备了些啥
其实我有好长一段时间没有正规地面试过了。三年前从数云换到GIO的时候因为简历上的相关技术太过于匹配所以基本上就和CTO聊了聊就确定过去了后来再回数云的时候也就和总监喝了一下咖啡就回来了。也就是大约5年的时间里面我没有正规地接受过面试。所以在准备投字节跳动之前我投了几个公司做了一下热身活动。记住这个时候其实不需要有啥心理包袱。因为本身候选人面试成功的可能性比较低一个合适的可以面试的人选他们也很乐意看看而且万一你确实想换工作但是心仪的公司面不上而热身活动的公司拿到了offer你也可以考虑考虑去看下。并且这个时候你没有任何的心理包袱因为反正你也就是来面试看看的所以面试时候的发挥可能也会更好点因此说不定最终拿的offer会比最后想去的那家更好呢
当然这里面不包括我。我第一次面试的时候就被血虐了T-T。参加中间件比赛的时候我用的netty做的实现。个人感觉对netty还算有所了解的结果面试官让我直接写出netty的源码结构包括哪几个主要的类以及名称还有互相之间的关系……工作的项目里面我使用了kafka来做消息队列来缓冲流量保护系统结果直接让我描述kafka的存储结构……比赛的时候我通过各种手段让程序无GC结果直接就要我说出各种GC算法的原理和应用场景……PolarDB比赛我们自己写了KV对标的是RocksDB结果让我描述RocksDB的索引结构……
当然虽然基本上他问的东西我都有所了解并且清楚应用场景在哪里但是到了细节里面的时候就稍微有点蒙圈了。虽然每个细节我确认我稍微看一下就能搞定的但是架不住面试的时候无法张口就来呀。这个时候感觉仿佛我变成了年轻时候的杨过忽然身边出现了一个金轮法王对我说“杨兄弟你的武功花样甚多不过我倚老卖老说一句博采众家固然甚妙但也不免驳而不纯。你最擅长的到底是哪一门功夫要用什么武功去对付郭靖夫妇”。对呀我的知识面很广各种应用框架新技术可能都有所耳闻但是我最擅长的是哪一个呢虽然我深深地知道我最擅长的是Scala和Akka、Play、Lagom等但是架不住没有人会问呀T-T。
事已至此虽然我帅如杨过但是此时也不得不考虑一下整理一下平生所学找出强点和弱点然后在面试的时候有的放矢。所以第一次热身面试之后的一个星期我基本就在整理我的知识结构了。我大致按照如下结构做了一份思维导图
JVM相关 运行时结构GC算法JVM调优 编程语言 ScalaJava 数据结构与算法 表、栈、队列树散列优先队列排序高级数据结构 并发编程 Java内存模型基本工具无锁并发反应式工具 微服务 微服务设计服务治理 中间件 分布式缓存消息队列RPC 数据库 关系型数据库NoSQLNewSQL 机器学习算法 推荐算法
其中JVM、Scala相关、并发编程、消息队列什么的我都仔细写了一下Java语言太简单就没弄数据结构稍微看了一下感觉脑海里面尘封很久的记忆忽然就被唤醒了所以也没咋做笔记微服务相关的太熟没弄推荐算法太难了也没有弄数据库相关的内容太多了也没弄。但是大体来说索引结构在这里拿到xmind之后你可以按照自己的知识结构体系将其补全或者修改然后学而时习之甚至在面试之前也可以稍微看看加深一下记忆。(想要获得我的索引笔记关注我的公众号后台回复知识索引即可。)
这之后我就进行了第二次面试。第二次面试技术相关的问题其实就没啥太大的问题了主要考验我的是说话技巧相关的事情。我这人有点毛病想的太多想要做的事情太多。这些其实没啥大问题但是我不确定的事情我也喜欢和人说还不分场合地就和人说了。比如我面的是中间件团队但是我终面面试的时候却说我因为之前搞推荐算法对深度学习产生了兴趣想要今年考个在职研究生学一下深度学习。可其实这个时候我说这个干嘛呢脑袋有点抽抽的吗并且他问了我一个手写代码的题我想了半天没有想出来。问题是如何去算根号2的值。我的第一反应很快牛顿迭代法嘛但是他说让我在纸上把代码写出来的时候我就一直在想办法回忆牛顿迭代法是个什么鬼应该怎么用来算根号2。然后一直在纸上推演导数啊什么鬼的……直到他提示我这个不是一个数学问题二分查找就能算出来的时候我才心不甘情不愿地开始弄二分查找的写法(内心OS牛顿迭代法肯定比二分查找好的呀为什么不给我时间回忆一下牛顿迭代)。这个时候又暴露了我一个问题我好久没有手写代码了。没有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联系我说还要给我加面试说团队老大要面我一下。原本字节面试一般31就OK了然后突如其来地加面试让我感觉有点忐忑所以后面的面试发挥没有前面好了。其实后来回想一下我可能是以为前面面试表现不好不能给我确定offer才会有后来多的面试的。所以当时心态不好答的感觉也没有之前果断。后来第五面完了以后团队老大还是不确定还要加一面交叉面试这个时候我就豁出去了。无所谓面上面不上没关系反正字节跳动在我家旁边只要庙不搬我就进得去。所以最后一面跟隔壁leader聊的时候相对来说还好一些。问题没有问啥特别的就是仔细问了下我最近做的一个项目优点在哪里缺点在哪里难点在哪里。然后顺着难点来进行扩展为什么是难点怎么解决有哪些方案这些方案有哪些优缺点。幸好我平时工作还是有思考的所以最终答的还不错。于是终于到了6月10号左右HR和我确定要发offer了。
最后
简历首选内推方式速度快效率高啊然后可以在拉钩boss脉脉大街上看看。简历上写道熟悉什么技术就一定要去熟悉它不然被问到不会很尴尬做过什么项目即使项目体量不大但也一定要熟悉实现原理不是你负责的部分也可以看看同事是怎么实现的换你来做你会怎么做做过什么会什么是广度问题取决于项目内容。但做过什么达到怎样一个境界这是深度问题和个人学习能力和解决问题的态度有关了。大公司看深度小公司看广度。大公司面试你会的小公司面试他们用到的你会不会也就是岗位匹配度。
面试过程一定要有礼貌即使你觉得面试官不尊重你经常打断你的讲解或者你觉得他不如你问的问题缺乏专业水平你也一定要尊重他谁叫现在是他选择你等你拿到offer后就是你选择他了。
另外描述问题一定要慢不要一下子讲一大堆慢显得你沉稳、自信而且你还有时间反应思路接下来怎么讲更好。现在开发过多依赖ide所以会有个弊端当我们在面试讲解很容易不知道某个方法怎么读这是一个硬伤…所以一定要对常见的关键性的类名、方法名、关键字读准有些面试官不耐烦会说“你到底说的是哪个”这时我们会容易乱了阵脚。正确的发音沉稳的描述好听的嗓音决对是一个加分项
最重要的是心态心态心态重要事情说三遍面试时间很短在短时间内对方要摸清你的底子还是比较不现实的所以有时也是看眼缘这还是个看脸的时代。
希望大家都能找到合适自己满意的工作 如果需要PDF版本可以在腾讯文档中自行领取 或者点击这里自行下载直达领取链接
进阶学习视频 附上我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 含BAT、小米、华为、美团、滴滴和我自己整理Android复习笔记包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。 d基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。
[外链图片转存中…(img-XFo3yNuZ-1621071300425)]