您当前的位置:网站首页>constant,年后的蚂蚁、头条、拼多多的面试总结,看完直接保藏吧,闷骚

constant,年后的蚂蚁、头条、拼多多的面试总结,看完直接保藏吧,闷骚

2019-04-01 11:31:41 投稿作者:admin 围观人数:231 评论人数:0次

不想听我BB直接进入面试共享:

  • 预备进程
  • 蚂蚁金服面试共享
  • 拼多多面试共享
  • 字节跳动面试共享
  • 总结

说起来开端进行面试是年前倒数第二周,上午9点,我还在去公司的公交上,忽然收到蚂蚁的面试电话,其实算不上真实的面试。面试官仅仅和我聊了下他们在做的作业(首要是做双十一这儿大促的安稳性确保,偏中心件吧),说的很具体,然后和我沟通了下是否有爱好,我表明有爱好,后边就收到正式面试的告诉,最终没挑选去蚂蚁表明抱愧。

其时我自己也预备出去看看时机,趁便看看自己的实力。其时我其实挺纠结的,一方面现在部分也正需求我,仍是能够有一番作为的,另一方面觉得近一年来前进缓慢,没有曾经飞速前进的成就感了,并且业务和技能偏于安稳,加上自己也归于那种比较懒散的人,骨子里仍是期望能够突破现状,持续在技能上有所精进。

在开端正式的总结之前,仍是期望各位同仁能否听我持续宣泄一会,抱拳!

我翻开自己2018年头立的flag,觉得甚是羞愧。其间就有一条是坚持一周写一篇博客,怎样办中心由于各种原因没能坚持下去。细细想来,首要是自己没能真实静下来心细心投入到技能的研讨和学习,那么为什么会这样?说白了仍是由于没有承认方针或许方针不明确,没有方针或许方针不明确都或许导致举动的失利。那么问题来了,方针是啥?就我而言,短期方针是深化研讨某一项技能,比方最近在研讨mysql,那么深化研讨必定要着手实践并且有所产出,这就够了么?还需求咱们能够触类旁通,结合实际开发场景想一想日常开发要注意什么,这中心有没有什么坑?能够看出,要前进真的不是一件简略的事,这种反人类的行为需求咱们战胜自我的缺点,逐步构成习气。真实牛逼的人,从不觉得细心学习是一件多么难的事,由于这现已构成了他的习气,就喝早上起床刷牙洗脸那么天然简略。

扯了那么多,开端进入正题,先后进行了蚂蚁、拼多多和字节跳动的面试。


预备进程

先说说我自己的状况,我2016先在蚂蚁实习了将近三个月,然后去了我现在的老东家,2.5年作业经验,能够说结业后就一向老老实实在老东家constant,年后的蚂蚁、头条、拼多多的面试总结,看完直接保藏吧,闷骚打怪晋级,尽管有蚂蚁的实习阅历,但是由于时刻太短,仍是有点虚的。所以面试官看到我简历第一个问题肯定是这样的。

“哇,你在蚂蚁待过,不错啊”,面试官笑嘻嘻地问到。 “是的,还好”,我说。 “为啥才三个月?”,面试官脸色一沉问到。 “哗啦啦解说一通。。。”,我解说道。 “哦,原来如此,那咱们开端面试吧”,面试官不苟言笑说到。

尼玛,早知道不写蚂蚁的实习阅历了,后边细心一想,最初写上蚂蚁不就给简历加点料嘛。

言归正传,预备进程其实很早开端了(当然这不是说我作业时老想着换岗,由于我了解现在的老东家并不是结尾,我还需求不断进步),具体可追溯到从蚂蚁离任的时分,其时出来也面了许多公司,没啥大公司,面了大约5家公司,都拿到offer了。作业之余常常会去额定研讨自己感爱好的技能以及作业用到的技能,力求把原理搞了解,并且会自己实践一把。此外,买了N多书,根本有时刻就会去看,补补根底,什么操作体系、数据结构与算法、mysql、jdk之类的源码,根本都好好温习了(文末会列一下自己看过的书和一些好的材料)。我深知根底就像“木桶效应”的短板,决议了能装多少水。

此外,在正式决议看时机之前,我给自己列了一个提纲,首要包含Java要把握的中心关键,有不理解的就查材料搞懂。我给自己定位仍是Java工程师,所以Java体系是必定要做到心中有数的,许多东西没有终年的堆集面试的时分很简略泄露,学习要对得起自己,不要哄人。

剩余的便是找渠道和内推了,除了蚂蚁,头条和拼多多都是找人内推的,感谢蚂蚁面试官对我的赏识,今后说不定会去蚂蚁咯。

渠道:脉脉、GitHub、v2


蚂蚁金服

年后的蚂蚁、头条、拼多多的面试总结,看完直接保藏吧

  • 一面
  • 二面
  • 三面
  • 四面
  • 五面
  • 小结

一面

一面就做了一道算法题,要求两小时内完结,给了长度为N的有重复元素的数组,要求输出第10大的数。典型的TopK问题,快排算法搞定。

算法题要注意的是合法性校验、边界条件以及反常的处理。别的,假如要写测验用例,必定要确保测验掩盖场景尽或许全。加上平常刷刷算法题,这种查核应该没问题的。

二面

  • 毛遂自荐下呗
  • 开源项目奉献过代码么?
  • Dubbo提过一个打印accesslog的bug算么
  • 现在在部分做什么,业务简略介绍下
  • 内部有哪些体系,效果和交互进程说下
  • Dubbo踩过哪些坑,别离是怎样处理的?
  • 说了反常处理时业务反常捕获的问题,自界说了一个反常拦截器
  • 开端进入正题,说下你对线程安全的了解
  • 多线程拜访同一个目标,假如不需求考虑额定的同步,调用目标的行为就能够取得正确的成果便是线程安全
  • 业务有哪些特性?
  • ACID
  • 怎样了解原子性?
  • 同一个业务下,多个操作要么成功要么失利,不存在部分成功或许部分失利的状况
  • 达观锁和失望锁的差异?
  • 失望锁假定会发生抵触,拜访的时分都要先取得锁,确保同一个时刻只需线程取得锁,读读也会堵塞;达观锁假定不会发生抵触,只需在提交操作的时分查看是否有抵触
  • 这两种锁在Jav蟹爪兰的饲养办法和注意事项a和MySQL别离是怎样完成的?
  • Java达观锁经过CAS完成,失望锁经过synchronize完成
  • mysql达观锁经过MVCC,也便是版别完成,失望锁能够经过select... for update加上排它锁
  • HashMap为什么不是线程安全的?
  • 多线程操作无并发操控,趁便说了在扩容的时分多线程拜访时会形成死锁,会形constant,年后的蚂蚁、头条、拼多多的面试总结,看完直接保藏吧,闷骚成一个环
  • 怎样让HashMap变得线程安全?
  • Collections的synchronize办法包装一个线程安全的Map,或许直接用ConcurrentHashMap
  • 两者的差异是什么?
  • 前者直接在put和get办法加了synchronize同步,后者采用了分段锁以及CAS支撑更高的并发
  • jdk1.8对ConcurrentHashMap做了哪些优化?
  • 刺进的时分假如数组元素运用了红黑树,取消了分段锁规划,synchronize代替了Lock锁
  • 为什么这样优化?
  • 防止抵触严峻时链表多长,进步查询功率,时刻杂乱度从O(N)进步到O(logN)
  • redis主从机制了解么?怎样完成的?
  • 有过GC调优的阅历么?
  • 有点虚,答得不是很好
  • 有什么想问的么?

三面

  • 简略毛遂自荐下
  • 监控体系怎样做的,分为哪些模块,模块之间怎样交互的?
  • 用的什么数据库?
  • mysql
  • 运用什么存储引擎,为什么运用InnnoDB?
  • 支撑业务、聚簇索引、MVCC
  • 订单表有做拆分么,怎样拆的?
  • 笔直拆分和水平拆分
  • 水平拆分后查询进程描绘下
  • 假如落到某个分片的数据很大怎样办?
  • 依照某种规矩,比方哈希取模、range,将单张表拆分为多张表
  • 哈希取模会有什么问题么?
  • 有的,数据散布不均,扩容缩容相对杂乱
  • 分库分表后怎样处理读写压力?
  • 一主多从、多主多从
  • 拆分后主键怎样确保专一?
  • UUID、Snowflake算法
  • Snowflake生成的ID是大局递加仅有么?
  • 不是,仅仅大局仅有,单机递加
  • 怎样完成大局递加的仅有ID?
  • 讲了TDDL的一次取一批ID,然后再本地渐渐分配的做法
  • Mysql的索引结构说下
  • 说了B+树,B+树能够对叶子结点次序查找,由于叶子结点存放了数据结点且有序
  • 主键索引和一般索引的差异
  • 主键索引的叶子结点存放了整行记载,一般索引的叶子结点存放了主键ID,查询的时分需求做一次回表查询
  • 必定要回表查询么?
  • 不必定,当查询的字段刚好是索引的字段或许索引的一部分,就能够不必回表,这也是索引掩盖的原理
  • 你们体系现在的瓶颈在哪里?
  • 你计划怎样优化?扼要说下你的优化思路
  • 有什么想问鬼王的金牌宠妃我么?

四面

  • 介绍下自己
  • 为什么要做逆向?
  • 怎样了解微效劳?
  • 效劳管理怎样完成的?
  • 说了限流、压测、监控等模块的完成
  • 这个不是中心件做的事么,为什么你们部分做?
  • 其时没有独自的中心件团队,微效劳刚搞不久,需求进行监控和功能优化
  • 说说Spring的生命周期吧
  • 说说GC的进程
  • 说了young gc和full gc的触发条件和收回进程以及目标创立的进程
  • CMS GC有什么问题?
  • 并发铲除算法,起浮废物,时刻短中止
  • 怎样防止发生起浮废物?
  • 记住有个VM参数设置能够让扫描新生代之前东阳活佛阿婆自己图片进行一次young gc,但是由于gc是五点支撑法忌讳虚拟机自动调度的,所以不确保必定履行。但是还有参数能够让虚拟机强制履行一次young gc
  • 强制young gc会有什么问题?
  • STW中止时刻变长
  • 知道G1么?
  • 了解一点
  • 收回进程是怎样样的?
  • young gc、并发阶段、混合阶段、full gc,说了Remem人体艺ber Set
  • 你说到的Remember Set底层是怎样完成的?
  • 有什么九七电影想问的么?

五面

五面是HRBP面的,和我提早预定了时刻,首要聊了之前在蚂蚁的实习阅历、部分在做的作业、作业开展、福利待遇等。阿里面试官的确是具有一票否决权的,很垂青你的价值观是否match,一般都比较喜爱youtube下载皮实的提名人。HR面必定要诚笃,不要扯谎,只需你扯谎HR都会去证明,直接cut了。

  • 之前蚂蚁实习三个月怎样不留下来?
  • 实习的时分主管是谁?
  • 实习做了哪些作业?(尼玛这种也问?)
  • 你对技能怎样看?平常运用什么技能栈?(阿里HR真的是既当爹又当妈)
  • 最近有在研讨什么东西么
  • 你对SRE怎样看
  • 对待遇有什么预期么

最终HR还对我说现在安稳性确保部挺缺人的,期望我赶快回复。

小结

蚂蚁面试比较注重根底,所以Java那些根本功必定要厚实。蚂蚁的作业环境仍是挺赞的,由于我面的是安稳性确保部分,还有许多独自的小组,什么三年1班,很有芳华的感觉。面试官constant,年后的蚂蚁、头条、拼多多的面试总结,看完直接保藏吧,闷骚根本水平都比较高,根本都P7以上,除了根底还问了不少架构规划方面的问题,收成仍是挺大的。


拼多多

年后的蚂蚁、头条、拼多多的面试总结,看完直接保藏吧

  • 面试前
  • 一面
  • 二面
  • 三面
  • 小结

面试前

面完蚂蚁后,早就听闻拼多多这个独角兽,决议也去面一把。首要我在脉脉找了一个拼多多的HR,加了微信聊了下,发了简历便开端我的拼多多面试之旅。这儿要非常感谢拼多多HR小姐姐,从面试内推到offer承认一向都在帮我,人真的很nice。

一面

  • 为啥蚂蚁只待了三个月?没转正?
  • 转正了,解说了一通。。。
  • Java中的HashMap、TreeMap解说下?
  • TreeMap红黑树,有序,HashMap无序,数组+链表
  • TreeMap查询写入的时刻杂乱度多少?
  • O(logN)
  • HashMap多线程有什么问题?
  • 线程安全,死锁
  • 怎样处理?
  • jdk1.8用了synchronize + CAS,扩容的时分经过CAS查看是否有修正,是则重试
  • 重试会有什么问题么?
  • CAS(Compare And Swap)是比较和交流,不会导致线程堵塞,但是由于重试是经过自旋完成的,所以依然会占用CPU时刻,还有ABA的问题
  • 怎样处理?
  • 超时,限制自旋的次数,ABA能够经过原理变量AtomicStampedReference处理,原理运用版别号进行比较
  • 超越重试次数假如依然失利怎样办?
  • synchronize互斥锁
  • CAS和synchronize有什么差异?都用synchronize不可么?
  • CAS是达观锁,不需求堵塞,硬件等级完成的原子性;synchronize会堵塞,JVM等级完成的原子性。运用场景不同,线程抵触严峻时CAS会形成CPU压力过大,导致吞吐量下降,synchronize的原理是先自旋然后堵塞,线程抵触严峻依然有较高的吞吐量,由于线程都被堵塞了,不会占用CPU
  • 假如要确保线程安全怎样办?
  • ConcurrentHashMap
  • ConcurrentHashMap怎样完成线程安全的?
  • 分段锁
  • get需求加锁么,为什么?
  • 不必,volatile关键字
  • volatile的效果是什么?
  • 确保内存可见性
  • 底层怎样完成的?
  • 说了主内存和作业内存,读写内存屏障,happen-before,并在纸上画了线程交互图
  • 在多核CPU下,可见性怎样确保?
  • 考虑了一会,总线嗅探技能
  • 聊项目,体系之间是怎样交互的?
  • 体系并发多少,怎样优化?
  • 给我一张纸,画了一个九方格,都填了数字,给一个M*N矩阵,从1开端逆时针打印这M*N个数,要求时刻杂乱度尽或许低
  • (心里OS:之前形似碰到过这题,哺乳期能够烫头发吗最优解是怎样完成来着)考虑中。。。
  • 能够先说下你的思路
  • (想起来了),萧红说了什么时分要改换方向的条件,向右、向下、向左、向上,依此循环
  • 有什么想问我的?

二面

  • 毛遂自荐下
  • 手上还有其他offerconstant,年后的蚂蚁、头条、拼多多的面试总结,看完直接保藏吧,闷骚么?
  • 拿了蚂蚁的offer
  • 部分安排结构是怎样的?
  • 。。。这轮不是技能面么,不过仍是老老实实说了
  • 体系有哪些模块,每个模块用了哪些技能constant,年后的蚂蚁、头条、拼多多的面试总结,看完直接保藏吧,闷骚,数据怎样流通的?
  • (面试官有点秃顶,一看等级就很高)给了我一张纸,我在上面简略画了下体系之间的流通状况
  • 链路追寻的信息是怎样传递的?
  • RpcContext的attachment,说了Span的结构(parentSpanId + curSpanId)
  • Span二炮手电视剧全集Id怎样确保仅有性?
  • UUID,说了下内部的定制改动
  • RpcContext是在什么维度传递的?
  • 线程
  • Dubbo的长途调用怎样完成的?
  • 讲了读取装备、组装url、创立Invoker、效劳导出、效劳注册以及顾客经过动态署理、filter、获取Invoker列表、负载均衡等进程(哗啦啦讲了10多分钟),我能够喝口水么
  • Spring的单例是怎样完成的?
  • 单例注册表
  • 怎样确保线程安全的?
  • HashMap + synchronize
  • 为什么要独自完成一个效劳管理结构?
  • 说了下内部刚搞微效劳不久,首要对效劳进大皖网行一些监控和功能优化
  • 谁主导的?
  • 内部还在运用么?
  • 逆向有想过怎样做成通用么?
  • 有什么想问的么?

三面

二面老大面完后就直接HR面了,首要问了些作业开展、是否有其他offer、以及入职意向等问题,趁便说了下公司的福利待遇等,都比较惯例啦。不过要说的是手上有其他offer或许大厂阅历会有必定加分。

小结

拼多多的面试流程就简略许多,毕竟是一个建立三年多的公司。面试难度中规中矩,只需根底厚实应该不是问题。但不得不说作业强度很大,开端面试前HR就提早和我承认能否承受这样强度的作业,想来的老铁仍是要做好预备


字节跳动

  • 面试前
  • 一面
  • 二面
  • 小结

面试前

头条的面试是三家里最专业的,每次面试前有专门的HR要插和你约时刻,承认OK后再进行面试。每次都是经过视频面试,由于都是之前都是电话面或现局面,所以视频面试仍是有点不天然。也有人觉得视频面试体会很赞,当然萝卜青菜各有所爱。最坑的二面的时分对方面试官的网络老是掉线,最终很委屈的挂了(当然有一些点答得欠好也是原因之一贵阳银行)。所以仍是有点惋惜的。

一面

  • 先毛遂自荐下
  • 聊项目,逆向体系是什么意思
  • 聊项目,逆向体系用了哪些技能
  • 线程池的线程数怎样承认?
  • 假如是IO操作为主怎样承认?
  • 假如核算型操作又怎样承认?
  • Redis了解么,了解哪些数据结构
  • 说了zset
  • zset底层金利来怎样完成的
  • 跳表
  • 跳表的查询进程是怎样样的,查询和刺进的时刻杂乱度
  • 说了先从第一层查找,不满足就下沉到第二层找,由于每一层都是有序的,写入和刺进的时刻杂乱度都是O(logN)
  • 红黑树了解么,时刻杂乱度
  • 说了是N叉平衡树,O(logN)
  • 已然两个数据结构时刻杂乱度都是O(logN),zset为什么不必红黑树
  • 跳表完成简略,踩坑成本低,红黑树每次刺进都要经过旋转以保持平衡,完成杂乱
  • 点了允许,说下Dubbo的原理
  • 说了效劳注册与发布以及顾客调用的进程
  • 踩过什么坑没有
  • 说了dubbo反常处理的和打印accesslog的问题
  • CAS了解么
  • 说了CAS的完成
  • 还了解其他同步机制么
  • 说了synchronize以及两者的差异,一个达观锁,一个失望锁
  • 那我constant,年后的蚂蚁、头条、拼多多的面试总结,看完直接保藏吧,闷骚们做一道题吧,数组A,2*n个元素,n个奇数、n个偶数,规划一个算法,使得数组奇数下标方位放置的都是奇数,偶数下标方位放置的都是偶数唐禹哲
  • 先说下你的思路
  • 从0下标开端遍历,假如是奇数下标判别该元素是否奇数,是则越过,否则从该方位寻觅下一个奇数
  • 下一个奇数?怎样找?
  • 有点懵逼,考虑中。。。
  • 有思路么?
  • 依然是先遍历一次数组,并对下标进行判别,假如下标特色和该方位元素不匹配从当时下标的下一个遍历数组元素,然后替换
  • 你这样时刻杂乱度有点高,假如要求O(N)要怎样做
  • 考虑一会,答道“界说两个指针,别离从下标0和1开端遍历,遇见奇数位是是偶数和偶数位是奇数就停下,交流内容”
  • 时刻差不多了,先到这吧。你有什么想问我的?

二面

  • 面试官和蔼许多,你先介绍下自己吧
  • 你对效劳管理怎样了解的?
  • 项目中的限流怎样完成的?
  • Guava ratelimiter,令牌桶算法
  • 具体怎样完成的?
  • 关键是固定速率且令牌数有限
  • 假如忽然许多线程一起恳求令牌,有什么问题?
  • 导致许多恳求积压,线程堵塞
  • 怎样处理呢?
  • 能够把积压的恳求放到音讯行列,然后异步处理
  • 假如不必音讯行列怎样处理?
  • 说了RateLimiter预消费的战略
  • 散布式追寻的上下文是怎样存储和传递的?
  • ThreadLocal + spanId,当时节点的spanId作为下个节点的父spanId
  • Dubbo的RpcContext是怎样传递的?
  • ThreadLocal
  • 主线程的ThreadLocal怎样传递到线程池?
  • 说了先在主线程经过ThreadLocal的get办法拿到上下文信息,在王挺线程池创立新的ThreadLocal并把之前获取的上下文信息设置到ThreadLocal中。这儿要注意的线程池创唐太宗李世民建的ThreadLocal要在finally中手动remove,否则会有内存走漏的问题
  • 你说的内存走漏具体是怎样发生的?
  • 说了ThreadLocal的结构,首要分两种场景:主线程依然对ThreadLocal有引证和主线程不存在对ThreadLocal的引证。第一种场景由于主线程依然在运转,所以仍是有对ThreadLocal的引证,那么ThreadLocal变量的引证和value是不会被收回的。第二种场景尽管主线程不存在对ThreadLocal的引证,且该引证是弱引证,所以会在gc的时分被收回,但是对用的value不是弱引证,不会被内存收回,依然会形成内存走漏
  • 线程池的线程是不是有必要手动remove才能够收回value?
  • 是的,由于线程池的中心线程是一向存在的,假如不整理,那么中心线程的threadLocals变量会一向持有ThreadLocal变量
  • 那你说的内存走漏是指主线程仍是线程池?
  • 主线程
  • 但是主线程不是都退出了,引证的目标不该该会自动收回么?
  • (面试官和内存走漏杠上了),缄默沉静了一会。。。
  • 那你说下SpringMVC不同用户登录的信息怎样确保线程安全的?
  • 方才解说的有点懵逼,一下没反应过来,竟然答复成锁了(大脑有点晕了,此刻现已一个小时过去了,感觉状况不妙。。。)
  • 这个直接用ThreadLocal不就能够么,你见过SpringMVC有锁完成的代码么
  • 有点晕菜。。。
  • 咱们聊聊mysql吧,说下索引结构
  • 说了B+树
  • 为什么运用B+树?
  • 说了查询功率高,O(log成人动漫在线观看N),能够充分运用磁盘预读的特性,多叉树,深度小,叶子结点有序且存储数据
  • 什么是索引掩盖?
  • 忘记了。。。
  • Java为什么要规划双亲派遣模型?
  • 什么时分需求自界说类加载器?
  • 咱们做一道题吧,手写一个目标池
  • 有什么想问我的么

小结

头条的面试的确很专业,每次面试官会提早给你发一个视频链接,然后准点开端面试,并且调查的点都比较全。

面试官都有一个特色,会捉住一个值得深化的点或许你没说清楚的点深化下去直到你把这个点讲清楚,否则面试官会觉得你并没有真实了解。二面面试官给了我一点主张,研讨技能的时分必定要去研讨发生的布景,弄了解在什么场景处理什么特定的问题,其实许多技能内部都是相通的。很诚实,很感谢这位面试官大大。


总结

从年前开端面试到头条面完大约一个多月的时刻,真的有点身心俱疲的感觉。最终拿到了拼多多、蚂蚁的offer,仍是蛮走运的。头条的面试对我协助很大,再次感谢面试官对我的诚实主张,以及拼多多的HR对我的烦琐的问题具体回答。

这儿要说的是面试前要做好两件事:简历和毛遂自荐,简历要好好回忆下自己做的一些项目,然后挑几个亮点项目。毛遂自荐根本每轮面试都有,所以最好提早自己操练下,想好要讲哪些东西,别离怎样讲。此外,简历说到的技能必定是自己深化研讨过的,没有深化研讨也最好找点材料预热下,不打无预备的仗。

这些年看过的书:

《Effective Java》、《现代操作体系》、《TCP/IP详解:卷一constant,年后的蚂蚁、头条、拼多多的面试总结,看完直接保藏吧,闷骚》、《代码整齐之道》、《重构》、《Java程序功能优化》、猪皮冻《Spring实战》、《Zookeeper》、《高功能MySQL》、《亿级网站架构中心技能》、《可弹性效劳架构》、《Java编程思维》

说实话这些书许多只看了一部分,我通常会带着问题看书,否则看着看着就睡着了,简直是催眠良药

看完文章记住点个赞哦

在下面谈论 转发起来吧 面试不易 我们支撑

the end
北京好玩的真人CS推荐、吃个玩乐推荐,本地新闻