我是如何 2 个月拿到 4 份 Offer 并收入翻倍的?

640?wx_fmt=gif

640?wx_fmt=jpeg

作者 | minus

责编 | 伍杏玲

本文经授权转载自石杉的架构笔记

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

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

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

 

640?wx_fmt=png

好未来

 

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

第一轮

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

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

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

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

另一种方案就是在往主库写数据的时候,可以直接往内存缓存中写一份,设置一个较短的过期时间,后面可以直接从缓存中读到数据。

我说完之后,面试官也没给出评价,就这么过去了。

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

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

第二轮

面试官更关注对一些技术的理解,问到了ElasticSearch的一些基础以及它和Mysql的区别;Eureka 和 ZooKeeper 做服务发现的区别在哪里。

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

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

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

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

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

 

640?wx_fmt=png

58 到家

 

面试一共三轮,上午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说一周之内。

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

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

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

 

640?wx_fmt=png

某生鲜电商独角兽

 

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

第一轮

一面主要还是基础,集中在IO、并发、缓存、Redis、ZooKeeper、分布式、JVM、数据库等。

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

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

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

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

第二轮

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

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

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

第三轮

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

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

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

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

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

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

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

HR面

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

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

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

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

 

640?wx_fmt=png

玩吧

 

这家公司的职位是去做App后台的,用户量也不错,面试一共两轮技术面,最后是HR面。

第一轮

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

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

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

第二轮

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

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

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

  • 说说自己的缺点

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

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

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

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

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

  • 对Shell熟不熟悉,写个word-count用到哪些命令

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

HR面

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

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

 

640?wx_fmt=png

友信金服-人人贷

 

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

第一轮

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

第二轮

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

640?wx_fmt=jpeg

从零开始的 Python 爬虫速成指南,实用!

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

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

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

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

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

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

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

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

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

第三轮

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

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

 

640?wx_fmt=png

某实时数据分析服务公司

 

 

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

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

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

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

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

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

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

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

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

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

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

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

 

640?wx_fmt=png

总结

 

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

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

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

【END】

640?wx_fmt=jpeg

 热 文 推 荐 

周鸿祎谈华为鸿蒙系统;百度回应“用搜索引擎填高考志愿”;腾讯首次全面公开开源路线图 | 极客头条

如何快速提升 Go 程序性能?

你还在抱怨开发工具,为什么不动手优化? | 人物志

我花了 10 年,从工厂妹逆袭为纽约高薪程序员

中本聪的一失之虑让比特币趋于中心化, 那这些问题的严重性, 你了解吗?

面试官问你MyBatis中有哪些设计模式,把这篇文章发给他

☞我发现一个新的软件,用自然语言编程!非常酷!

吴恩达Drive.ai因经营困难“卖身”苹果

☞马云曾经偶像,终于把阿里留下的1400亿败光了!

640?wx_fmt=gif点击阅读原文,输入关键词,搜索CSDN文章。

640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/67132.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

offer(第二版)2021-06-02

还差差14个题完结 面试题1:赋值运算符函数 面试题2:实现Singleton模式 面试题3:数组中重复的数字 面试题4:二维数组中的查找 面试题5:替换空格 面试题6:从尾到头打印链表 面试题7:重建二…

一文带你玩转offer-01

文章目录 1.RabbitMq是如何实现消息路由的1.1 工作流程1.2 路由策略Direct ExchangeTopic ExchangeFanout Exchange 2.谈谈你对时间轮的理解2.1 什么是时间轮2.2 时间轮的工作原理2.3 时间轮优缺点分析 3.什么是幂等?如何解决幂等性问题3.1 什么是幂等3.2 如何解决幂…

和HR谈了5min包裹,刚拿到的offer又被撤回了...

最近,在网上看到很多人都分享了自己谈薪失败,导致offer被revoke的情况。 撤回就算了,更惨的是,还有可能会被该公司列入黑名单。 Offer被revoke很常见,不过在求一个面试机会都难的今年,到手的offer被撤就显得…

您有一份OFFER请查收!

我们总以为生活欠我们一个“满意” 其实我们欠生活一次“尝试” 爱可生正在招人 快来投简历尝试下吧!🤔 如果你 想看到 金融银行体系对数据高可用性要求达99.9999%, 严格要求数据一致性的场景下 数据库如何选型、如何运维?…

记一次腾讯社招前端面试(已拿到offer入职)

作者:小冷^_^ 链接:https://juejin.im/post/5dde65496fb9a07161483fc9 笔者信息 我某211非计算机相关专业2018届本科生,在校期间实习有半年多的小公司Java开发实习经历,毕业之后投递360,入职了360企业安全成为专门的前…

刚收到了Facebook的Offer,我是这样为面试做准备的?

点击上方“程序员大咖”,选择“置顶公众号” 关键时刻,第一时间送达! 我刚刚在硅谷的科技公司完成了7次现场面试,我收到了来自Facebook的软件工程师的职位Offer。下面分享一下我是怎么为面试做准备的,以及我在这个过程…

自学测试半年,我终于收到了腾讯的offer,收到消息的那一刻我哭出了声...

我是一名毕业于普通一本的化学专业学生,毕业的两年时间里,我一直奔波在化工厂里。每天工作三班倒,下了班就是一包烟一瓶酒,生活过得非常堕落。 原本想着虽然每天很累,但是至少稳定。然而没有想到的是,化工…

ChatGPT如何帮助DevOps提升效率

DevOps 是一种方法论,旨在提高软件开发和 IT 运营团队的协作和效率。DevOps 涉及各种任务和流程的自动化,例如规划、编码、测试、部署、监控和故障排除。然而,其中一些任务和流程仍然有大量任务需要人工手动处理,而这会减慢软件产…

IQ测试GPT完胜大学生;AIGC+表情包=?微软将GPT全面集成到Office;原作者对AI有声读物不太满意;GitHub今日热榜 | ShowMeAI资讯日报

🎡 『IQ测试』AI 完胜大学生 GPT-3 在智商(IQ)测试中的表现如何?UCLA(加利福尼亚大学洛杉矶分校)的研究人员发现,在衡量 IQ 的一系列推理测试中,自回归语言模型 GPT-3 的成绩已经明…

什么样的企业需要私有化部署?

编者按:本文介绍了私有化部署的概念及特点,分析了私有化部署适用于什么样的企业,并进一步提出天翎低代码平台在私有化部署方面颇有建树,可以满足企业需求。 概要: (1)私有化部署的概念及特点 (2)什么样的企业需要私有…

私有化部署的企业IM:实现工作消息、文件的全面可控

随着数字化转型的持续深化,大型政企组织所面临的安全压力倍增,在体验到沟通协作上的方便快捷后,会更深层地思考软件能够抵御风险的程度,这也使得安全可控成为企业必须注重的选项。所以在面对企业规模大、设备部署多、业务场景复杂…

私有化部署vs公有云部署,你知道这些不同吗?

编者按:低代码的私有化部署与SaaS云部署决定了用户体验有很大的不同,本文带各位深入探究其中差异,并介绍私有化本地部署的低代码平台。 不同模式要分清 作为两者截然不同的部署模式,;私有化部署与SaaS云部署区别可谓巨…

企业微信私有版设置服务器,企业微信私有化部署解决方案,企业微信私有化部署疑问解答...

企业微信具备了 企业微信私有部署和企业微信的区别 很多用户之前没有了解过私有化部署,不太了解私有化部署对于企业来说有什么好处,而在微伴君看来,进行私有化部署,对企业来说至少有以下好处: 1、安全可控。私有化部署…

关于Android app 国际化 中英文翻译的细节处理

导语: 最近一个项目上有要求完成app国际化,也就是如果系统语言是英文,那么你的app打开时就会自动读取string 中的字符串资源,自动完成匹配,以满足国际化需求,那么我们就按照步骤走,完成我们的a…

英文android系统,安卓系统中英文对照

安卓系统中英文对照 来源:华强电子网 作者:华仔 浏览:926 时间:2017-04-11 17:24 标签: 摘要: 模拟安卓机身内存里的\system\app, app文件夹里就是装系统自带的文件。将那些不要的,也…

安卓开发需求之一:实现中英文切换

大家好,今天给大家分享一下中英文切换,其实不止是中英文,只是这个比较有代表性,什么语言都可以切换。 安卓里面控制语言就是新建包,在res里面新建values-zh-rCN和values-en-rUS,zh代表的是中文&#xff0c…

安卓开发中英文切换需求

其实不止是中英文,只是这个比较有代表性,什么语言都可以切换。 安卓里面控制语言就是新建包,在res里面新建values-zh-rCN和values-en-rUS,zh代表的是中文,en代表的是英文。把strings相对应的内容复制过去。我把我的代…

Android开发-应用中英文(语言)切换(二)

APP中针对不同国家不同地区的人群使用那么应用的语言自然也要能够随时进行切换,最近做的项目有中文和英文切换的需求,所以在了解了一下网上常用的方法后记录一下我使用的方法,只是简单的应用,后续如果有不同需求需要自己去改。♻ …

抓考研英语单词主要矛盾的经验分享,考研英语真题词频统计

按 这篇考研经验总结文章提到过,我自身对于一个英文句子如果单词都认识那么大概率可以自然翻译出来(大概是得益于看英文电影(偶尔不带翻译字幕)和英文芯片手册多的原因培养了语感),所以主要矛盾是单词&…

23、24考研党必备的网站推荐

23、24考研党必备的网站推荐 23考研进入到后半场,24考研也即将迎来备考高潮。不知道以下将要推荐的网站同学们有没有在用了呢。要知道考研是一场信息战,考验的不只是我们的学习能力,还有寻找资源的能力。接下来就给大家盘点几个我总结的考研…