本文转载自微信公众号:科技缪缪

今年初拿了个饿了么P7的offer,于此同时大家顺便看看我怎么途虎一轮游的。废话不多说,直接上题吧。

 

一面

首先上来就是自我介绍,简单的说下自己的项目经验,涉及的技术栈之类的。

然后每一轮必问的问题来了:说说你印象最深刻的项目!

这个已经被问的都不想说了,挑个有很多槽点的来说,并且自己已经知道问题答案的,我说了一个服务迁移同时双写的解决方案。

接着按照国际惯例先来一个HashMap原理。。。

那就来吧,简单说下HashMap数组+链表结构,hash的实现方式和好处,高低位异或降低冲突,扩容的方式,头插和尾差这些差不多就好了。

这里我也不等他问了直接讲ConcurrentHashMap了,反正接下来肯定是问的,就说了下1.7和1.8的实现区别啊,1.7使用分段锁啊,而1.8使用CAS+synchronized实现,增加了红黑树避免链表过长导致的性能问题,put和get的实现我一般就不主动说了太累了,等他问问了就说,不问就省点功夫。

然后既然说到了synchronized那就说说它的原理吧,接下来又是什么monitor对象啊,对象头啊,锁信息、分代年龄、GC标志一些难懂的话,整个电话里都充满了欢乐的气息。

好吧,接着自己老实点说锁的优化吧,自旋、消除、粗化、轻量级、重量级、偏向都说一遍,我记得我就说了下自旋和偏向就完了,因为我发现年纪大了这些东西跟背书一样总是忘。。。

一切跟着节奏走,说了锁,那就ReentrantLock继续走着啊,AQS实现原来来一发,然后说CAS state赋值,失败进入等待队列,讲下公平锁非公平锁。

然后发现java面试真的是八股文套路,又来了新词了吧,CAS原理又说一通,然后有的面试官又会问ABA的一些东西,又扯下乐观锁版本号之类的。

说到这里面试官好在没跟着乐观锁直接走到数据库去了,问了下线程池原理,这个太简单了,几个名词maxSize、coreSize、keepAliveTime、queue说一说就好了,基础。

完了真的就开始数据库了,都是常规题,索引B+数啊,覆盖索引,回表啊什么的,还有也是必问的事务ACID,隔离级别,MVCC原理。

一面都比较基础吧,也没什么难点,简单就过了。

二面-交叉面

过了快一周接到了二面的电话,是在钉钉里拉了个群,说是要视频面试,在家里快发霉了好好的洗了个头结果没和我视频,只是钉钉打了个电话过来,国际惯例,自我介绍+印象最深刻项目!

二面是交叉面,其他组的一个架构师来面的,上来就是送命题,说是假设有1亿的用户session数据缓存到redis,怎么做保证高可用?这种题我觉得都是看你有没有思路了,比如我问他我们根据日活或者其他的数据可以选择缓存一部分热点数据啊,根据停留时长选择过期时间、过期策略,然后看存储的数据类型来选择什么数据格式。

接着讲怎么保证redis的高可用,这个可就简单多了,这就是面试技巧了,讲高可用就讲会出现的问题就行了,redis就直接从主从复制、哨兵、集群、持久化什么AOF RDB说,够说10分钟,说完了看情况接着说缓存击穿、雪崩、穿透、热key怎么解决,把能说的都说一遍就结束了。面试官肯定一看这小伙子不错,我都没问他就说完了,妥了妥了。

接着问了个问题说cpu负载和CPU使用率区别,我告诉他医院有3个医生,10个病人都排在一个医生下面,另外2个医生没人,这时候CPU使用率是33.33%,但是负载就非常高了。然后接着问系统负载过高怎么办?不是CPU负载也不是IO负载!

这一题我没回答,主要是感觉没太明白意思,后面去网上搜了一下,说是阿里面试必问题,大家有兴趣可以去搜搜看。接着又问CPU很高怎么排查?这个也没啥,我前面的面试详解六里面写了,这里不展开。

然后接着聊了下GC,年轻代老年代的收集器哪些,GC过程,不是很深入。接着说饿了么日订单过千万,针对这个场景分库分表你怎么做?这个按照我们之前的经验说了下之前的解决方案,根据用户或者商家维度sharding,历史数据归档,只能查询3个月或者半年数据,有更多的需要走离线数仓这种。

然后一定会问那根据用户sharding其他维度的查询怎么办,这里就是关联表啊,索引啊,如果可以一定带着sharding_key去查询啊,实在不行只能多线程扫表啊,还有打宽表之类的。

接着又聊MQ,怎么保证消息的可靠性,因为我们之前用阿里云的ONS,就以RocketMQ举例子,丢失的场景啊,生产者发送失败、MQ自己丢失、消费者消费失败3个方面说就好了。

最后就聊了下1.8的新特性stream啥的说说,BIO\NIO说说最后就结束了。整体感觉还行,除了那个负载的问题有点坑,另外就是NIO这个确实基本没用上靠背书了。。

三面-老板P8面

3面就是以后直属老板面试了,这一轮没太多聊技术问题,主要是聊项目怎么做的啊,怎么设计啊,让你设计的话你怎么设计,不过这一轮感觉当时脑子有点抽就是面的不太行,反应迟钝,反而最简单的是面的最不好的一轮。。本来还以为挂了,最后过了。

四面-部门leader P9面

4面就是中台的大领导面了,3面老板是P8,4面的话是P9面,这一轮的问题也比较中规中矩吧,基于项目问的非常细,我这里也就没办法表述了,还有就是又把dubbo、mq、redis又说了一遍,可没把我累死。这一轮面的比较好,轻松通过吧。

终面-HR

因为我面的是7所以一般就是5面了,除非可能其他几面的面试官意见不统一可能要加面,我一个朋友就加面了一轮还是过了。最后就是HR谈薪资了,这里HR先问我你期望薪资多少,我说涨幅20-30%,然后他直接给我报了一个数。。。。我想问那你问我干啥??小朋友头上有很多问号好不好。。。

题外话-途虎面

放到最后来说途虎,实际上还是因为感觉被坑了,在中间面饿了么的时候先是面了1轮很简单的过了,然后中间说这个部门没HC了,换另外一个部门面,那我说行吧,既然都这样了,那就面吧。结果嘛,好家伙,第一回一面算是挺正常的一面,这一回的我有点惨, springboot要支持mybatis怎么配置?那个什么方法我忘记了有几个参数?我当时的内心。。。然后我就挂了。我很绝望你知道吧!

有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号

好文章,我在看❤️

我是怎样刚拿饿了么P7 offer,然后途虎一轮游的相关推荐

  1. 拿到饿了么 P7 Offer,却一轮游途虎……

    作者 | 科技缪缪 来源 | 科技缪缪(ID:kejimiumiu) 今年初拿了个饿了么P7的Offer,于此同时大家顺便看看我怎么途虎一轮游的.废话不多说,直接上题吧. 一面 首先上来就是自我介绍, ...

  2. 7年7个主管,我是如何在支付宝从P5升P7的?

    按:蚂蚁金服集团CEO井贤栋在阿里巴巴集团18周年年会演讲中表示,科技和服务是蚂蚁面向未来的重要基石. "科技不是时髦的标签,而是创造未来的能力.我们要真正用好科技去解决现在和未来的问题.& ...

  3. 做Java开发7年,今年9个月时间圆梦饿了么P7

    前言 工作拧螺丝,面试造火箭.我想这是每个程序员比较头疼的事情吧!但是,又必须要经历一个面试流程,尤其是摸不清面试官问的问题,导致面试的时候不知道如何回答. 本文是工作7年Java程序员从几十次面试中 ...

  4. 阿里面试,拿到 P7 offer

    谈一谈我 2020 年年初面试阿里 Java 开发的面试的经历吧,先说一下结果--最终拿到阿里 P7 的offer,薪资 32k * 14 + 80 万期权. 背景 我是 C/C++ 出身,2017 ...

  5. 我是如何在一晚上拿到阿里巴巴offer的?

    我的编程人生一文发出后受到不少同学鼓励,非常感谢大家,也坚定了继续给大家分享的信心. 看过文章的同学应该知道文中提到获得阿里巴巴offer的经历,因此分享一下这段故事,希望对大家有用. 为什么文章题目 ...

  6. 一年半Android工作经验剑指杭州:我是如何拿下头条、阿里和滴滴 offer 的

    BroadcastReceiver的不同类型,普通广播,系统广播.有序广播.粘性广播.应用类广播 Fragment相关 Fragment生命周期 Fragment的懒加载 Fragment之间的通信 ...

  7. 刚下飞机,到手的 offer 没了!跨境电商巨头被曝大规模毁约

    "谢邀,人在新加坡,刚下飞机",听到这话是不是以为哪个成功人士又要发表演讲了,但没想到,后面接的是"当场失业".原本这个为人所津津乐道的梗,如今却满是心酸. 最 ...

  8. 我是如何拿到百度计算机视觉暑期实习offer的?百度面经(成功上岸!已拿offer)

    欢迎关注微信公众号[计算机视觉联盟] 获取更多前沿AI.CV资讯 背景: 普通985硕,没走内推 已经拿到百度CV暑期实习offer 总体评价: 难度不大,面试官都很nice,一共三轮面试,基于简历的 ...

  9. 德国留学计算机 马普所,刚拿到马普所offer, 回报园中战友,简单介绍一下经历希望提供一点参考...

    本人国内985七年制转5+3专硕,18年毕业.因为从本科2年级开始萌生了出国的年头,也算是给未来定下了一个目标,当时觉得这个目标遥不可及但是一步一步走来终于实现了,希望大家都要对自己充满信心!也希望这 ...

最新文章

  1. micropython文件上传软件_ESP32玩转MicroPython(二) 连接WIFI网络 webperl文件传输
  2. vue----第一个工程项目
  3. python从入门到实践 第12章 武装飞船 之 调整飞船的速度程序实践
  4. 过滤请求绝技 — 布隆过滤器与布谷鸟过滤器
  5. 2020 全球 JS 现状调查报告
  6. php进入文件目录,php文件目录操作
  7. mysql外键教程_关于MySQL外键的简单学习教程
  8. 当导用模块与包的import与from的问题(模块与包的调用)
  9. python爬虫学习:电商数据分析
  10. npm ERR! code ERR_STREAM_WRITE_AFTER_END npm install 报错实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的
  11. navicat15 安装
  12. 计算机平面设计是什么学的什么,计算机平面设计主要学什么?
  13. 入职要求提供上家公司的工资银行流水?
  14. 倪光南:网络不安全要挨打 不用县县都建数据中心
  15. 计算机检索策略制定过程,计算机文献检索的基本方法与策略
  16. 使用gdb调试出现 No debugging symbols found in a.out
  17. 2020-2021下学期 奖状的清单
  18. 思考“手绘家谱”的算法
  19. 垃圾收集器与内存分配策略系列(三)
  20. Tivoli Netcool/OMNIbus

热门文章

  1. windows配置Python多版本共存
  2. python中bs4库_python系统学习2——beautiful soup库(bs4库)学习
  3. 面试题 gety() getTop() TranslationY关系
  4. c语言大型软件设计的面向对象_C语言跟C++的根本区别以及特点
  5. 前端基础-html-表格的结构标签(了解)
  6. 计算机网络之数据链路层:3、差错控制(奇偶校验、CRC冗余校验、海明校验)
  7. (数据库系统概论|王珊)第三章关系数据库标准语言SQL:习题
  8. LeetCode 680 验证回文字符串 Ⅱ
  9. LeetCode 167 两数之和 II - 输入有序数组
  10. Python with和contextlib.closing配合使用(contextlib)