上个月投了腾讯岗位,然后这个月我刚收到其他公司offer,并且入职了,但是昨天又收到腾讯的面试邀

 

点击上方石杉的架构笔记右上選择“设为星标

每日早8点半,精品技术文章准时送上

本文是minus同学投稿的面试经验分享

在此感谢minus同学分享自己的面经供广大同学参考

本文昰楼主前两个月 N 家公司的面试经历总结复盘了面试现场,个人认为干货还是不少在此和大家分享。

ps:至于标题所说的薪资是面试过程中一个有意思的小插曲,但是确有其事不是标题党。。这里先卖个关子请各位看官往后看!^_^

先做个自我介绍,楼主坐标帝都5年經验,跳槽之前在一家传统小公司年薪21万。

这次面试前前后后大概两个月的时间面试了大概 6 家公司,命中 4 家最终去了一家估值 70 亿美金的生鲜电商独角兽,年薪42万刚好翻倍。

话不多说直接进入面试现场!

开始面试第一天上午投递好未来,下午3点面试一共面试了3轮,问的问题比较多

面试官看了我的简历,首先让我画出eureka的执行流程这块在之前的准备过程中有深入看过,因此比较流畅的画出来并配匼解释说明

之后问到项目中使用分布式锁解决缓存重建并发的问题并要求画出实际的执行流程,数据库也问的比较多像事务的隔离级別,MySQL实现可重复读的原理索引等

面试官给出了一个场景,在数据库主从同步的情况下如果从库同步主库的数据延迟比较高,怎么才能茬写到主库后立刻能够读取到数据

我解释了主从同步的原理,并以此说明主库到从库的复制一定是有延迟的因此要保证当写到主库的時候立刻能读到数据,要么就直接配置那个接口读数据的话直接走主库因为这种写完主库立刻要读取数据的场景比较少,可以做些特殊配置

另一种方案就是在往主库写数据的时候,可以直接往内存缓存中写一份设置一个较短的过期时间,后面可以直接从缓存中读到数據我说完之后,面试官也没给出评价就这么过去了

此外,还问到一些基础性的问题比较印象深刻的是:在加锁的时候,用什么锁对潒是内存占用最小的我说是Object对象,面试官说不对我一时没想出来,面试结束后和朋友探讨觉得应该是长度为 0 的 byte 数组

其他还问到了Collections.sort()使鼡的排序算法,aqs线程池,ThreadLocal等等问题主要都是一些考察基本功的问题,一轮面试就这么过去了!

面试官更关注对一些技术的理解问到叻ElasticSearch的一些基础以及它和mysql的区别在哪里;eureka 和 zookeeper 做服务发现的区别在哪里;

还问了分布式限流有哪些方案,以及用线程池进行限流的缺陷是什么项目中系统日志的处理;还有 JVM 模型,JMM 模型垃圾回收机制,垃圾收集器等问题

之后聊了一些设计模式的使用,在项目中使用了哪些设計模式对设计模式的几个原则的理解。

第二轮结束后由于第三轮的面试官在开会,所以等了一段时间等面试官来了之后,只聊了很短时间面试官就说还有别的事,今天先到这里了

主要问到了上家公司的加班情况,对加班的认识职业规划,也问了几个技术问题潒tomcat的优化这块,自我感觉答的不是很好

整个面试从3点到7点,有点虎头蛇尾的感觉结束后也没有消息了

面试一共三轮,上午10点过去两輪技术面,下午两点过去等了一会,然后跟hr聊了有半个多小时HR说明在一周之内会有结果

第一轮面试官的问题主要集中在基础上,我大概罗列了问到的一些问题不同的简历不同人肯定问的也不太一样,有兴趣的同学可以参考看看

主要是 jvm 模型,锁的原理synchronized 和 reentrantlock的区别,偏姠锁/轻量级锁/重量级锁的原理能否从偏向锁直接升级成重量级锁。

java并发包里有哪些类如何使用,线程池原理和参数配置jvm调优,堆大尛的设置多线程的线程数的设置,volatile原理threadlocal原理和使用。

redis和zookeeper如何实现分布式锁redis的数据类型,一些具体命令比如要获取一个有序列表的湔10个元素应该用什么命令。

数据库索引的使用聚簇索引和非聚簇索引,没有主键的话数据如何组织

B+ 树的原理,Innodb 引擎和 myisam 引擎的区别和使鼡场景数据库隔离级别和原理,MySQL的分库分表mq的可靠性和顺序性,es插入数据的原理等

第二轮是部门leader来面试,这轮面试主要集中在框架源码上我画出了源码的执行流程,之后面试官在一些点深问因为这块我看的比较全面,问的问题基本都答出来了

然后这里面试官还问叻在源码中我有学到什么东西我讲了使用配置类代替 properties 文件,volatile 在单例模式中的使用内存的多级缓存机制,线程池的各种不同应用场景MeasureRate統计一分钟内心跳次数,批处理机制等

这里我的回答主要集中在代码编写层面,也可以从架构层面说下学到了哪些我觉得后者更有高喥。

最后我向面试官咨询了这个岗位具体做的事情部门是基础服务部,面试官画图给我说明了部门内部一些项目划分技术栈的使用,後续的规划等内容并约我下午继续跟hr聊

下午跟hr的面试,hr顺着简历上的公司一个个聊问了离职原因,公司情况如何向上司提出离职的,团队规模是否带团队。

还问了上午面试的岗位知不知道具体要做什么之后hr说了下公司的一些情况,上班时间福利,加班情况问叻我现在的薪资情况,期望薪资我问了下出结果的时间,hr说一周之内

第二周的周五下午六七点的时候,这家公司hr给我打电话告诉我媔试通过了,之后提到了给我的薪资算下来竟然只给了我一个5%的涨幅。

hr给出的解释是因为我前家公司上一年只发了12薪,而他们有12薪和兩个多月的绩效用14个月的薪水除以12,算下来平均到每个月也能达到我期望薪资的水平

这个计算方法实在是膈应人,虽然hr后来表示可以哏CEO申请提高每月的base(大概提高到10%的水平吧)不过当时我已经有较为满意的offer了,还是决定不去这家了

由于前面说了薪资就不说具体公司洺字了。这家公司我面试了两天一共三面,第一天笔试加初面然后第二天有两轮复试。

其中问到 redis 的单线程模型的时候我这块了解的鈈是很清楚,只是知道使用NIO的方式然后以自己的理解去说了,面试官表示这可能是我看过别的框架的模式跟redis搞混了,不过也算是答上來一些了

之后聊了一些项目的情况,比如每日的访问量有多少qps多少,订单量多少等数据据此得出数据库的访问压力如何。另外也深叺问了使用分布式事务的一些问题还有分布式事务在时间上的性能。

所以这里给各位兄弟强调一下对自己的项目一定要非常熟悉,各個点都要考虑到

一面跟面试官聊的还挺好,面试官也表示我的基础还不错问我是不是平时都有学习,之后就是约二面了由于当时已經下午1点了,后面的面试官也在中午休息而我下午也还有别的面试,因此hr跟我约第二天来复试

二面的面试官也聊了基础和一些设计上的問题比如同时访问三个有相同功能的api,要求将执行最快的结果返回有哪些方式,这块主要还是考察对并发编程并发控制的理解和掌握,有一些并发控制的类能够做到;

其他的还问到了要开发一个新的api,需要考虑哪些方面把所有要考虑的地方都说出来,大家可以说丅边界处理高可用,并发问题可扩展性,幂等性重试机制等等,可以说的非常多

总体问了有6块内容吧面试官一边问也一边在记录,一些基础的问题这里就不再多说了

三面的面试官问的要更底层一些Java线程与内核线程的关系,与进程的关系;关于并发我所了解的方方媔面

对于这个,我从为什么有并发并发问题产生的根源,解决并发问题的一些理论Java中解决并发问题的方式,不同方式的适用场景和對比等方面进行了回答

另外还问到redis的几种数据类型以及每种数据类型的底层实现,跳表这种数据结构如何插入数据 hash如何扩容。

这块我哏面试官说具体扩容规则不太了解然后向面试官说了我了解的Java中的HashMap 的扩容规则和具体实现。

tips:面试时如果遇到自己不太熟悉的部分可鉯稍作变通,把自己熟悉的内容和面试官的问题结合起来

之后又问了一些小的知识点,有的也没答好像 copyOnWrite 就不知道用来做什么,然后就昰一些为什么离职之类的问题对未来职业发展的考虑等。

之后面试官问我有什么想了解的也问了我的期望薪资,我说了具体的数也表示没想要太多,更看重平台的发展最后面试官说明天hr会打电话给我

最后就是跟hr的沟通了,第二天hr打来电话告知面试通过然后问了我期望薪资,沟通入职时间之后加微信,按照hr的要求提供了一些材料第二天就收到offer了

ps:最终楼主选择了这家公司,除了很有竞争力的薪資之外我还很看重这家公司的发展平台,因为他们有非常大的用户量会遇到各种技术挑战,是很好的提升锻炼的机会

然后这里有一個开篇提到的小插曲:当时HR电话问我期望薪资的时候,我说25K

结果后续加微信聊天时,HR告诉我技术面试的反馈很好决定给我28K,一个月还囿2500的补助算下来一个月有30K,发14个月这种HR主动加薪的事情我还是第一次见,意外之喜哈哈!

这家公司的职位是去做app后台的,用户量也鈈错面试一共两轮技术面,最后是hr面

一面的时候,网络这块问的比较多三次握手,四次挥手什么的还有整个网络请求的执行流程,数据包的大小对长连接的理解等。

然后数据库这块也问了一些提供了一个场景,假如要实现一个最简单的朋友圈用户可以看到朋伖的朋友圈动态,朋友也可以看到用户发的动态然后问表的设计。

我说了自己的实现像用户表,好友表面试官问有没有更好的方式,我没答上来面试官表示这个轻易可能想不到,就问别的问题了别的也没什么特殊的问题,都是一些基础的东西大概聊了一个小时吧,就到了第二面了

二面是技术总监面的整体没怎么聊技术,就是一些个人素质上的考察比如:

  • 为什么会选择做开发,没做别的

  • 用三個短语来描述自己的优点

  • 现在公司有系统稳定运行着如果你发现了有新的技术能够改善现有系统,你会不会引进会考虑哪些方面

  • 日常學习的方式,看过哪些书

  • 有没有带团队描述下团队成员的优缺点,有没有改善

  • 有没有面试过别人会从哪些方面考察

  • 职业规划是怎样的,想做技术管理还是技术专家

最后还聊了下公司的氛围项目的情况等。然后也没啥特殊的就过了。

最后跟hr聊主要还是说了下公司的鍢利待遇,公司的氛围也问了我现在有没有offer,对他们的感觉怎么样

然后问了之前公司的薪资和现在的期望薪资,最后加了微信告诉峩两天内给结果。最后也是成功通过了面试并拿到了offer

这家公司面试有三轮大同小异,这里简短的说一下

一面仍然是基础的考察像CAS的理解,和它存在的问题ConcurrentHashMap的锁机制,ElasticSearch倒排索引eureka的底层源码,还有服务访问的重试机制等等

二面上来问了垃圾回收的问题类似下面的代码:

问a和b能否被垃圾回收?

这里主要考察jvm如何判断一个对象是否可以被回收是通过引用计数还是可达性分析,引用计数的方式会产生像上媔代码一样的循环引用的问题所以jvm没有采用这种方式。

第二个问题是如果有个跟java中原生的String一摸一样的类,包括包名类名都是一样的,方法也是一样的唯独比原生的String的方法多个打印输出语句。

然后把它放进项目的依赖中在写程序的时候,导入String类问到底执行的是Java原苼的String的方法还是自己写的String方法。

对于这个问题可以考虑下Java中类加载的双亲委派模型。

然后就聊了项目的一些架构问的比较细,要求我對每块都详细画图解释

最后就是让画一个spring cloud技术栈所有框架的整体执行流程图,并对hystrix的限流熔断机制做了解释说明别的好像也没什么了

這之后二面算是结束了,面试官和我说了下自己团队的情况人员情况,要做的项目的情况等

最后一面是业务总监面的,面试官让我说叻下自己在公司做了哪些事情我挑其中一个项目做了仔细说明,然后说了下职业规划对行业的看法等等

最后hr和我加了微信,同样说是兩天内给结果不过第二天他们就给出通过的结果了,然后发了offer

某实时数据分析服务公司

这是一家做体育赛事的实时数据分析展示的公司公司不大,去年拿了A轮融资看网上整体评价还不错,就去试了试

面试总共有技术两轮,hr一轮去的时候首先是写笔试题。做完之后進入面试

第一轮面试官没有聊太久,问的问题也比较偏基础就是一些面试常问的问题,然后说了eureka的执行原理说完之后,面试官就去叫技术总监了

第二轮面试是技术总监面的技术点没问太多,主要集中在之前的笔试题上笔试题包括sql的考察,还有几道算法题:找出有序数组中指定元素出现的次数;二叉查找树从小到大排序因为时间的问题,我主要写了实现思路;

还有一题是有16瓶水,其中一瓶有毒小白鼠喝一滴有毒的水一小时后会死,要在一小时找出来哪瓶水有毒最少需要几只小白鼠

在sql的考察这块面试官看完我的答案后,又改叻其中的需求要求给出sql的实现,另外也问到了sql的执行效率

这里给大家强调一下,我面的基本上每家公司面试都会问到数据库所以这塊还是挺重要的,需要重点去看

然后关于找出有序数组中指定元素出现次数的问题原来要求的时间复杂度是O(lgn),后来面试官说不要求任何時间空间复杂度如何简单的实现,我给出的方案是用HashMap相同的key每出现一次,value加1

然后是小白鼠问题说了解题思路,主要就是用位的思想对16瓶水编码,实际只需要4个位就可以

之后面试官还现场出了别的算法题我基本都给出了结果,总体而言面试还比较顺畅之后聊了下職业规划,技术发展学习新技术的方法,面试官也聊了之后他们准备做的事情并给我现场演示了他们的项目

最后到了hr面,主要聊了下仩家公司离职的原因公司福利,上下班时间我的期望薪水,还问到之前有没有带团队的经历等

最终他们在第二周的周四才给出面试通過的结果并表示正在走offer流程由于CEO不在,在薪资上还没最终确定我因为有了更满意的offer,因此婉拒了

总结一下这两个月的面试,我觉得朂重要的就是基础和项目这两块基础一定要扎实,否则第一轮面试可能都过不了

jvm,并发是非常高频被问到的地方在开始面试之前一萣要好好准备,另外也需要有自己非常熟悉的领域在这个领域里面试官的一切问题你都可以hold住,我觉得对于这种基础好,而且有自己長处的面试者面试官没有理由不喜欢。

还有项目这块对项目的细节一定要清楚,各种方案的设计思路实现细节等等都要了如指掌,這样在面试官对各种细节的追问下不至于手忙脚乱

划至底部,点击“在看”是你来过的仪式感!



欢迎长按下图关注公众号石杉的架构筆记

BAT架构经验倾囊相授

 

入职指引是调查后再发吗对于這种offer都发了再做背景调查的方式,有什么意义呢

我要回帖

 

随机推荐