我是怎样刚拿饿了么P7 offer,然后途虎一轮游的
今年初拿了个饿了么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,然后途虎一轮游的的更多相关文章
- 做Java开发7年,今年9个月时间圆梦饿了么P7
前言 工作拧螺丝,面试造火箭.我想这是每个程序员比较头疼的事情吧!但是,又必须要经历一个面试流程,尤其是摸不清面试官问的问题,导致面试的时候不知道如何回答.本文是工作7年Java程序员从几十次面试中挑 ...
- 面经 | 我是如何通过校招拿到京东的Offer的
本文来自粉丝投稿,原作者:红鼻子熊. 版权归Hollis所有. OFFER:京东2018校招物流研发岗 个人:211小硕 面试时间:2017年秋天 整体:三轮面试,前两轮为技术面试,最后为hr面试 一 ...
- 一年半前端工作经验试水杭州:我是如何拿下网易、阿里和滴滴 offer 的
前言 笔者毕业于东北大学,大学毕业社招进入环球网,前端开发工程师一职.技术栈:React+node,Github 地址 成果 来到杭州的目标非常的明确,大厂.其实就是网易.阿里和滴滴.好在基本三家都拿 ...
- 2020Java程序员架构师面试宝典,学习后面试必过,震惊,本人通过这篇教程,拿到了0个offer
1. 引言 Java后端学习路线 <吐血整理>顶级程序员工具集 https://github.com/AobingJava/JavaFamily 跟上Java8 经历阿里.头条.腾讯等知名 ...
- 那些令人敬佩的刚学OI的大佬
我是萌新刚学OI,请问LCT怎么写常树最小啊 我是女生刚学OI,请问树链剖分哪里写挂了? 萌新求教,这棵SBT哪里有问题啊啊啊…… 刚学OI,请问可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最 ...
- 饿了么CTO张雪峰:允许90后的技术人员“浮躁“一点
编者按:今年4月,饿了么正式加入了阿里新零售战队,进一步加速其在本地生活市场的扩张速度.在创业9年的时间中,饿了么在外卖领域经历了真正的“从0到1”,尤其是在外卖平台的技术升级方面,越过了一个又一个的 ...
- 双非硕士的辛酸求职回忆录:第 2 篇 谈谈我是如何同时找到Java、Python、Go等开发岗和国企银行的科技岗位Offer(上篇)
1. 双非硕士的辛酸求职之旅--谈谈我是如何同时找到Java.Python.Go等开发岗和国企银行的offer 1.1. 秋招最终情况 本人情况:双非硕,意向工作城市广深,Java和Python技术栈 ...
- BAT线下战争:巨额投资或培养出自己最大对手(包括美团、58、饿了么在内的公司都在计划推出自己的支付工具和金融产品,腾讯只做2不做O)
BAT线下战争:巨额投资或培养出自己最大对手 2015年10月12日09:49 <财经>杂志 我有话说(18人参与) 收藏本文 BAT大举投资线下公司,看似咄咄逼人 ...
- 学习方法分享:为何一年半就能拿到大厂 offer
毕竟是聊聊曾经,放一张大学课堂上灵光一现,手写的一个我曾经一直使用的网名 前言 原文地址:Nealyang/personalBlog 讲真,的确是运气,才有机会进大厂.也没想到,那篇一年半工作经验试水 ...
随机推荐
- PHP timezone_abbreviations_list() 函数
------------恢复内容开始------------ 实例 输出 "act" 时区的夏令时.偏移量和时区名称: <?php$tzlist=timezone_abbre ...
- luogu P4852 yyf hates choukapai 单调队列优化dp
LINK:yyf hates choukapai 由于赶时间 要做的题有点小多.. 所以简略概述一下. 容易想到一个暴力dp \(f_{i,j,k}\)表示到了第i张牌此时连抽j次已经单抽k次的最大值 ...
- cobbler多机定制安装
目录 cobbler多机定制安装 1. cobbler服务端部署 2. 客户端安装 3. 定制安装配置 4. 安装 client1开机 client2开机 cobbler多机定制安装 1. cobbl ...
- Linux常用命令之cp、mv、rm、cat、more、head、tail、ln命令讲解
上一章节中,我们了解到了Linux系统的最基础的几个文件处理命令,核心的是ls命令,在今天这章中,我们来继续学习Linux对于文件操作相关的一些命令,比如复制.移动.删除.查看等命令. 1.cp 命令 ...
- 学学Viewbinding
Viewbinding 1.环境需求 环境上,需要Android Studio 3.6 Canary 11+ 同样的Gradle也需要升级(这年头都4.0了,应该没有还在用低版本的了吧...) 2.配 ...
- 【Python 实例】回文数判断
[Python 实例]回文数判断 题目: 源代码: 运行结果: 题目: 判断输入的字符串是否为回文数 源代码: """ string_reverse_output():反 ...
- MySQL时间设计 int timestamp datatime 查询效率性能比较
在数据库设计的时候,我们经常会需要设计时间字段,在MYSQL中,时间字段可以使用int.timestamp.datetime三种类型来存储,那么这三种类型哪一种用来存储时间性能比较高,效率好呢?飘易就 ...
- Hexo博客部署到远程仓库(Conding、Gitee、Github)
一.本地环境搭建 1.安装Git Git可以有效.高速的处理各种项目版本管理.也就是用来管理你的hexo博客文章,上传到GitHub的工具. Git下载地址 安装好了之后使用git -version查 ...
- Linux Docker部署
Docker 安装 卸载旧版docker yum remove docker \ docker-client \ docker-client-latest \ docker-common \ dock ...
- 关于vector的erase删除操作的两种不同方法,在linux与visual studio的实现讨论
关于vector的erase删除操作的两种不同方法,在linux与visual studio的实现讨论 1.前言: 最近在做某一个题时,用到了vector的删除操作,利用的是erase()函数删除符合 ...