hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

Bigo的Java口试,我挂在了第三轮手艺面上.........

2019-11-18杂谈搜奇网34°c
A+ A-

背景

前段时刻家里出了点事,告退回家待了一段时刻,处置惩罚完故乡的事变后就回到广州这边继承找事情,也许是国庆头几天我去口试了一家叫做Bigo(YY的子公司),口试的职位是面向3-5年的Java开辟,终究自身倒在了第三轮的手艺面上。虽然有些遗憾和气馁,但想着照样写篇博客来纪录一下自身的口试历程好了,也算是对宽大顺序员同胞们的分享,愿望对你们今后的进修和口试能有所协助。

个人状况

先说下LZ的个人状况。

17年毕业,二本,如今位于广州,是一个非常平常的Java开辟顺序员,算起来有两年多的开辟履历。

实在这个阶段有点为难,高不成低不就,比低级顺序员轻微好点,但也达不到高等的水平。加上现如今IT行业靠近饱和,许多岗亭都是要求起码3-5年以上开辟履历,所以关于两年摆布开辟履历的需求实际上是比较小的,这点在LZ找事情的历程当中深有体味。最可悲的是,本年的大环境不好,许多公司不停的在裁人,更别说招人了,严酷的情势关于求职者来讲更是落井下石,置信许多求职的同砚也有所体味。所以,不到万不得已的状况下,提议不要裸辞!

Bigo口试

口试岗亭:Java背景开辟

履历要求:3-5年

由因而国庆前往口试Bigo的,到如今也有一个多月的时刻了,虽然仍有印象,但也有不少口试题忘了,所以我只能只管依据自身的回想来形貌口试的历程,不明白的地方还请包涵!

一面(微信电话面)

bigo的第一面是微信电话口试,本来是想直接电话面,但口试官说需要手写算法题,就改成微信电话面。

  • 毛遂自荐
  • 先相识一下Java基础吧,什么是内存走漏和内存溢出?(溢出是指建立太多对象致使内存空间不足,走漏是无用对象没有接纳)

  • JVM怎样推断对象是无用对象?(根搜刮算法,从GC Root动身,对象没有援用,就判定为无用对象)
  • 根搜刮算法中的根节点可所以哪些对象?(类对象,虚拟机栈的对象,常量援用的对象)
  • 重载和重写的区分?(重载发生在同个类,要领名雷同,参数列表差别;重写是父子类之间的行动,要领名好参数列表都雷同,要领体内的顺序差别)
  • 重写有什么限定没有?
  • Java有哪些同步东西?(synchronized和Lock)
  • 这两者有什么区分(之前写过比较这两者的文章,依据上面的知识点也许讲了下,文章地点:Java并发编程:synchronized、Lock、ReentrantLock以及ReadWriteLock的那些事儿 )
  • ArrayList和LinkedList的区分?(ArrayList基于数组,搜刮快,增删元素慢,LinkedList基于链表,增删快,搜刮由于要遍历元素所以效力低)
  • 这两种鸠合哪一个比较占内存?(看状况的,ArrayList假如有扩容而且元素没占满数组的话,糟蹋的内存空间也是比较多的,但平常状况下,LinkedList占用的内存会相对多点,由于每一个元素都包含了指向前后节点的指针)
  • 说一下HashMap的底层构造(数组 + 链表,链表太长变成红黑树)
  • HashMap为何线程不平安,1.7版本之前HashMap有什么问题(扩容时多线程操纵能够会致使链表成环的涌现,然后挪用get要领会死轮回)
  • 相识ConcurrentHashMap吗?说一下它为何能线程平安(用了分段锁)
  • 哪些要领需要锁住全部鸠合的?(读取size的时刻)

  • 看你简历写着你相识RPC啊,那你说下RPC的全部历程?(从客户端提议要求,到socket传输,然后效劳端处置惩罚音讯,以及怎样序列化之类的都也许讲了一下)
  • 效劳端猎取客户端要挪用的接口信息后,怎样找到对应的完成类的?(反射 + 注解吧,这里也不是很懂)
  • dubbo的负载平衡有几种算法?(随机,轮询,起码活泼要求数,一致性hash)
  • 你说的起码活泼数算法是怎样回事?(效劳提供者有一个计数器,纪录当前同时要求个数,值越小申明该效劳器负载越小,路由器会优先选择该效劳器)
  • 效劳端怎样晓得客户端要挪用的算法的?(socket通报音讯过来的时刻会把算法战略通报给效劳端)
  • 你用过redis做散布式锁是吧,你们是自身写的东西类吗?(不是,我们用redission做散布式锁)
  • 线程拿到key后是怎样保证不死锁的呢?(给这个key加上一个逾期时刻)
  • 假如这个逾期时刻到了,然则营业顺序还没处置惩罚完,该怎样办?(额......能够在营业逻辑上保证幂等性吧)
  • 那假如多个营业都用到散布式锁的话,每一个营业都要保证幂等性了,有无更好的要领?(额......思索了下临时没有眉目,口试官就说那先跳过吧。预先我相识到redission自身是有个看门狗的监控线程的,假如检测到key被持有的话就会再次重置逾期时刻)
  • 你那里有纸和笔吧,写一道算法,用两个栈模仿一个行列的入队和出队。(由于之前温习的时刻对这道题有印象,写的时刻也比较快,也许是用了五分钟,然后就拍成图片发给了口试官,对方看完后示意没问题就完毕了口试。)

第一面问的不算难,问题也都是偏基础之类的,虽然答得不算圆满,但历程照样比较顺利的。几天以后,Bigo的hr就约请我去他们公司列入现场口试。

二面

到Bigo公司后,一名hr小姐姐款待我到了一个会议室,等了也许半个小时,一名中年男子走了进来,非常的客套,说不好意义让我等那末久了,而且引见了自身是手艺司理,然后就最先了我们的攀谈。

  • 遵照通例,让我简朴做下毛遂自荐,这个历程他也在边看我的简历。

  • 说下你最熟习的项目吧。(我就拿我上家公司近来做的一个电商项目最先引见,从简朴的项目形貌,到项目的主要功用,以及我主要担任的功用模块,吧啦吧啦..............)

  • 你对这个项目这么熟习,那你依据你的明白画一下你的项目架构图,另有说下你详细介入了哪部份。(这个问题照样比较贫苦的,毕竟我当时去职的时刻也挺长了,对这个项目的架构也是有些隐约。固然,末了照样硬着头皮照样画了个也许,从前端最先接见,然后经由过程nginx网关层,末了到详细的效劳等等,而且把自身介入的效劳模块也标示了出来)

  • 你的项目用到了Spring Cloud GateWay,既然你已有nginx做网关了,为何还要用gateWay呢?(nginx是做负载平衡,另有针对客户端的接见做网关用的,gateWay是接入营业层做的网关,而且还整合了熔断器Hystrix)

  • 熔断器Hystrix最主要的作用是什么?(防备效劳挪用失利致使的效劳雪崩,能降级)

  • 你的项目用到了redis,你们的redis是怎样布置的?(额。。。。好像是尖兵形式布置的吧。)

  • 说一下你对尖兵形式的明白?(我对尖兵形式相识的不多,就也许说了下Sentinel监控之类的,另有相似ping敕令的心跳机制,以及怎样推断一个master是下线之类。。。。。)

  • 那你们为何要用尖兵形式呢?怎样不必集群的体式格局布置呢?一最先get不到他的点,就说尖兵自身就是多实例布置的,他诠释了一下,说的是redis-cluster的布置计划。(额......redis的环境搭建有特地的运维职员布置的,应当是优先斟酌高可用吧..........最先有点心慌了,由于我也不晓得为何)

  • 哦,那你是以为集群没有办法完成高可用吗?(不....不是啊,只是以为尖兵形式能够比较保证主从复制平安性吧........我也不晓得自身在说什么)

  • 集群也是能保证高可用的,你晓得它又是怎样保证主从一致性的吗?(好吧,这里真的不晓得了,只能跳过)

  • 你肯定有微信吧,假如让你来设想微信朋友圈的话,你会怎样设想它的属性成员呢?(嗯......需要有用户表,朋友圈的表,挚友表之类的吧)

  • 嗯,好,你也晓得微信用户有靠近10亿之多,那肯定要涉及到分库分表,假如是你的话,怎样设想分库分表呢?(这个问题考核的点比较大,我答的实在平常,而且这个历程口试官还不停的举行连环炮发问,致使这个话题说了有快要20分钟,限于篇幅,这里就不再详述了)

  • 这边差不多了,末了你写一道算法吧,有一组未排序的整形数组,你设想一个算法,对数组的元素两两配对,然后输出最大的绝对值差和最小的绝对值差的"对数"。

    (听到这道题,我第一主意就是用HashMap来保留,key是两个元素的绝对值差,value是配对的数目,假如有雷同的就加1,没有就赋值为1,然后末了对map做排序,输出最大和最小的value值,写完后口试官说效果虽然是准确的,然则不够效力,由于遍历的时刻复杂度成了O(n^2),然后提醒了我往排序这方面想。我心血来潮,能够先对数组做排序,然后首元素与第二个元素做绝对值差,记为num,然后首元素轮回和背面的元素做盘算,直到绝对值差不等于num位置,如许效力比起O(n^2)快多了。)

口试完后,手艺官就问我有什么要问他的,我就针对这个岗亭的职责和项目所用的手艺栈做了讯问,然后就让我先等下,等他去关照三面的手艺官。说实话,二面给我的觉得是最舒服的,由于口试官很亲热,口试的历程一向主动的指导我,而且在职业规划方面给了我许多的提议,让我受益不浅,虽然口试时刻有一个半小时,但却涓滴不以为长,全部口试历程聊得挺舒服的,不过由于时刻比较久了,许多问题我也记不清了。

三面

二面完毕后半个小时,三面的手艺口试官就最先进来了,从他的额头发量散布状况就可以猜测是个大牛,人狠话不多,坐下后也没让我做毛遂自荐,直接开问,全部历程我答的也不好,而且口试官的问题表述有些不太清晰,常常需要跟他反复确认清晰。

  • 对事件相识吗?说一下事件的断绝级别有哪些(我以比较相识的Spring来讲,把Spring的四种事件断绝级别都叙说了一遍)

  • 你做过电商,那应当晓得下单的时刻需要减库存对吧,假定如今有两个效劳A和B,离别操纵定单和库存表,A保留定单后,挪用B减库存的时刻失利了,这个时刻A也要回滚,这个事件要怎样设想?(B效劳的减库存要领不抛非常,由挪用方也就是A效劳来抛非常)

  • 相识过读写星散吗?(额。。。也许相识一点,就是写的时刻进主库,读的时刻读从库)

  • 你说读的时刻读从库,如今假定有一张表User做了读写星散,然后有个线程在一个事件范围内对User表先做了写的处置惩罚,然后又做了读的处置惩罚,这时刻数据还没同步到从库,怎样保证读的时刻能读到最新的数据呢?(听完马上有点懵圈,一时刻答不上来,厥后口试官说想办法保证一个事件中读写都是同一个库才行)

  • 你的项目里用到了rabbitmq,那你说下mq的消耗端是怎样处置惩罚的?(就是消耗端吸收到音讯以后,会先把音讯存到数据库中,然后再从数据库中定时跑音讯)

  • 也就是说你的mq是先保留到数据库中,然后营业逻辑就是从mq中读取音讯然后再处置惩罚的是吧?(是的)

  • 那你的音讯是唯一的吗?(是的,用了唯一束缚)

  • 你怎样保证音讯肯定能被消耗?或者说怎样保证肯定能存到数据库中?(这里最先慌了,由于mq接入那一块我只是看过部份逻辑,但没有亲身介入,凭着自身对mq的相识就答道,应当是靠rabbitmq的ack确认机制)

  • 好,那你整顿一下你的消耗端的全部处置惩罚逻辑流程,然后说说你的ack是在那里返回的(听到这里我的心凉了一截,mq接入这部份我确切没有介入,硬着头皮依据自身的明白画了一下流程,但实在漏洞百出)

  • 依据你如许画的话,假如数据库倏忽宕机,你的音讯该怎样确认已吸收?(额.....那发送音讯的时刻就寄存音讯能够吧.........回覆的时刻内心万万只草泥马途经........行了吧,没玩没了了。)

  • 那假如发送端的效劳是多台布置呢?你保留音讯的时刻数据库就一向报唯一性的毛病?(好吧,你赢了。。。末了硬是憋出了一句,您说的是,如许设想确切不好。。。。)

  • 算了,跳过吧,如今你来设想一个map,然后有两个线程对这个map举行操纵,主线程高速增添和删除map的元素,然后有个异步线程定时去删除map中主线程5秒内没有删除的数据,你会怎样设想?

    (这道题我答得并不好,做了下简朴的思索就说能够把map的key加上时刻戳的标志,遍历的时刻发明小于当前时刻戳5秒前的元素就举行删除,口试官对如许的回覆显著不太惬意,说如许遍历会影响效力,ps:对这道题,大佬们假如有什么卓识能够在批评区说下!)

......另有其他问题,但我只记住了这么多,就如许吧。

面完末了一道题后,口试官就示意此次口试历程完毕了,让我归去等音讯。听到这里,我晓得基础上算是宣布效果了。回想起来,自身这一轮口试确切表现的很平常,加上时刻拖得很长,从当天的2点半一向口试到6点多,精神上也尽显疲态。果真,几天以后,hr微信关照了我,说我第三轮手艺口试没有经由过程,这一次口试以失利了结。

总结

以上就是口试的也许历程,不得不说,大厂的口试照样非常有手艺水平的,这个历程当中我学到了许多,这里分享下个人的一些心得:

1、基础基础基础!主要的事变说三遍,不管是什么阶段的顺序员,基础都是最主要的。每一个公司的口试肯定会涉及到基础知识的发问,假如你的基础不踏实,每每第一面就可以够被镌汰。

2、简历需要恰当的包装。老实说,我的简历肯定是经由包装的,这也是我的事情年限不够,但却能猎取Bigo口试时机的主要原因,所以恰当的包装一下简历很有必要,不过牢记一点,就是不能脱离现实,比方明显只要两年履历,却硬是写到三年。小厂还能够蒙混过关,但大厂基础很难,由于许多公司会在入职前做背景观察。

3、要对简历上的手艺点很熟习。简历包装能够,但肯定要对简历上的手艺点很熟习,比方只是简朴写过rabbitmq的demo的话,就不要写“熟习”等字眼,由于许多的口试官会针对一个妙技点问的很深切,像连环炮一样的深耕你对这个妙技点的明白水平。

4、简历上的项目要非常熟习。平常我们写简历都是需要对自身的项目做肯定顺序的包装和美化,项目写得好能给简历加许多分。但肯定要对项目非常的熟习,不熟习的模块最好不要写上去。笔者此次就吃了大亏,我的简历上有个电商项目就写到了用rabbitmq处置惩罚下单,虽然轻微相识过那部份下单的处置惩罚逻辑,但由于没有亲身介入就没有做深切的相识,口试时在这一块内容上被Bigo三面的口试官逼得末了张口结舌。

5、提拔自身的架构头脑。关于初中级顺序员来讲,一样平常的事情就是基础的增编削查,把功用完成就完事了,这类头脑不能说不好,只是想更上一层楼的话,营业时刻需要提拔下自身的架构头脑能力,比方说假如让你接办一个项目的话,你会怎样斟酌设想这个项目,从团体架构,到引入一些组件,再到设想详细的营业效劳,这些都是设想一个项目必需要斟酌的环节,关于提拔我们的架构头脑是一种很好的磨炼,这也是许多大厂口试高等顺序员时的主要考核部份。

6、不要裸辞。这也是我最质朴的提议了,大环境不好,且行且珍爱吧,唉~~~~

总的来讲,此次口试Bigo照样收成颇丰的,虽然有点遗憾,但也没什么忏悔的,毕竟自身口试之前也是预备的很充分了,有些问题答得不好申明我另有许多手艺盲区,不懂就是不懂,再这么吹也吹不出来。这也算是给我提了个醒,你还嫩着呢,好好修炼内功吧,毕竟菜但是原罪啊。

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
Bigo的Java口试,我挂在了第三轮手艺面上.........

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282237.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>