今年初拿了个饿了么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这个确实基本没用上靠背书了。。

三面-老板面

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

四面-部门leader面

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

终面

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

途虎

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

好吧,这就是今年的一份面试经历,有点意思的,与君共勉吧。

我是怎样刚拿饿了么P7 offer,然后途虎一轮游的的更多相关文章

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

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

  2. 面经 | 我是如何通过校招拿到京东的Offer的

    本文来自粉丝投稿,原作者:红鼻子熊. 版权归Hollis所有. OFFER:京东2018校招物流研发岗 个人:211小硕 面试时间:2017年秋天 整体:三轮面试,前两轮为技术面试,最后为hr面试 一 ...

  3. 一年半前端工作经验试水杭州:我是如何拿下网易、阿里和滴滴 offer 的

    前言 笔者毕业于东北大学,大学毕业社招进入环球网,前端开发工程师一职.技术栈:React+node,Github 地址 成果 来到杭州的目标非常的明确,大厂.其实就是网易.阿里和滴滴.好在基本三家都拿 ...

  4. 2020Java程序员架构师面试宝典,学习后面试必过,震惊,本人通过这篇教程,拿到了0个offer

    1. 引言 Java后端学习路线 <吐血整理>顶级程序员工具集 https://github.com/AobingJava/JavaFamily 跟上Java8 经历阿里.头条.腾讯等知名 ...

  5. 那些令人敬佩的刚学OI的大佬

    我是萌新刚学OI,请问LCT怎么写常树最小啊 我是女生刚学OI,请问树链剖分哪里写挂了? 萌新求教,这棵SBT哪里有问题啊啊啊…… 刚学OI,请问可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最 ...

  6. 饿了么CTO张雪峰:允许90后的技术人员“浮躁“一点

    编者按:今年4月,饿了么正式加入了阿里新零售战队,进一步加速其在本地生活市场的扩张速度.在创业9年的时间中,饿了么在外卖领域经历了真正的“从0到1”,尤其是在外卖平台的技术升级方面,越过了一个又一个的 ...

  7. 双非硕士的辛酸求职回忆录:第 2 篇 谈谈我是如何同时找到Java、Python、Go等开发岗和国企银行的科技岗位Offer(上篇)

    1. 双非硕士的辛酸求职之旅--谈谈我是如何同时找到Java.Python.Go等开发岗和国企银行的offer 1.1. 秋招最终情况 本人情况:双非硕,意向工作城市广深,Java和Python技术栈 ...

  8. BAT线下战争:巨额投资或培养出自己最大对手(包括美团、58、饿了么在内的公司都在计划推出自己的支付工具和金融产品,腾讯只做2不做O)

    BAT线下战争:巨额投资或培养出自己最大对手 2015年10月12日09:49   <财经>杂志    我有话说(18人参与) 收藏本文        BAT大举投资线下公司,看似咄咄逼人 ...

  9. 学习方法分享:为何一年半就能拿到大厂 offer

    毕竟是聊聊曾经,放一张大学课堂上灵光一现,手写的一个我曾经一直使用的网名 前言 原文地址:Nealyang/personalBlog 讲真,的确是运气,才有机会进大厂.也没想到,那篇一年半工作经验试水 ...

随机推荐

  1. PHP empty() 函数

    empty() 函数用于检查一个变量是否为空.高佣联盟 www.cgewang.com empty() 判断一个变量是否被认为是空的.当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不 ...

  2. PHP addChild() 函数

    实例 给 body 元素和 footer 元素添加一个子元素: <?php$note=<<<XML<note>高佣联盟 www.cgewang.com<to& ...

  3. efcore 新特性 SaveChanges Events

    efcore 新特性 SaveChanges Events Intro 昨天早上看到之前关注的一个 efcore 的 issue 被 closed ,于是看了一眼, ef core 新合并了一个 PR ...

  4. 利用Data Vault对数据仓库进行建模(二)

    写在前面 本篇先不讨论Data Vault其本身,因为不见得所有人都接受这个.但是里边有一些很不错的东西跟主流的数据仓库方法是有共同点的,所以这里主要讨论这些共同的方法,在笔者看来,无论是Kimbal ...

  5. SpringMvc异常处理和SpringMvc拦截器

    1. 异常处理思路 Controller调用service,service调用dao,异常都是向上抛出的,最终有DispatcherServlet找异常处理器进 行异常的处理. SpringMVC的异 ...

  6. Docker初探之常用命令

    在正式使用Docker之前,我们先来熟悉下Docker中常用的命令,因为对Docker的操作就如同操作Linux一样,大部分操作通过命令完成. 一.登录 为什么要使用登录? 因为我们使用Docker, ...

  7. .NETCore微服务探寻(三) - 远程过程调用(RPC)

    前言 一直以来对于.NETCore微服务相关的技术栈都处于一个浅尝辄止的了解阶段,在现实工作中也对于微服务也一直没有使用的业务环境,所以一直也没有整合过一个完整的基于.NETCore技术栈的微服务项目 ...

  8. 【av68676164(p31-p32)】Windows和Linux同步机制

    4.6.1 Windows同步机制 临界区(CRITICAL_SECTION) 在进程内使用,保证仅一个线程可以申请到该对象 临界区内是临界资源的访问 相关的API函数 初始化临界区 WINBASEA ...

  9. Weblogic 连接 RMI 服务报错 Connection refused

    WebLogic 连接 RMI 服务报错 Connection refused 访问 WebLogic RMI 服务报错,连接被拒绝,连接超时. 奇怪的是,报错的 host 根本不是我要访问的. 报错 ...

  10. PMP各种图比较记忆

    1.控制图:监控过程是否稳定,是否具有可预测的绩效,在问题还未发生时解决.需要关注控制图中的平均值.控制界限.规格界限的含义.控制上.下限一般设为±3个西格玛.过程失控的情况包括数据点在控制界限外,以 ...