从7月17日,投简历到现在,没有细数,大概也有100+左右了,每天有一两场笔试,后期的话每天一两场面试。以至于做到后面,看到测评笔试属实都有点ptsd了🙈。
下面是学习过的部分资料,以及部分我的面经总结。
秋招笔记整理
我的部分学习资料总结
部分摘自 ztygalaxy
刷题
框架
面经
Bilibili 大学
GitHub 大学
我的面经
从7月17日,投简历到现在,没有细数,大概也有100+左右了,每天有一两场笔试,后期的话每天一两场面试。以至于做到后面,看到测评笔试属实都有点ptsd了🙈。
携程(8/30笔试、9/9一面、9/14二面、9/16HR面、9/21英语测评,10/14OC,10/28谈薪,已签三方)
9/9一面
面试官自己记错时间了,给我面试延后了一小时🙈。
自我介绍
Nginx反向代理是在第几层。
让你设计一个网站的文章的点击量排名,你怎么实现?首先肯定用zset,然后key、value怎么存储呢?我说value每次+1,面试官说不对。
GC的种类?我反问了是GC算法还是回收器种类?其实是YoungGC、FullGC,minorGC。
这些回STW吗?
linux了解吗?
查看CPU使用率?top
如何查看各个线程?ps -ef | grep java,这面试官问的,也没说查看线程id,问的都不清楚。
查看所有端口的信息?
计算机中使用什么码?
计算机网络?
三次握手?
四次握手,中间的二三次可以合并吗?
问我自己没有做过科研吗?额,我都说了两片SCI二区,一篇再投,第一个项目系统就是就是科研系统,然后在那边给他解释这个系统。他也有反问,我还是得把这个语言组织一下。科研里面花的时间比较多。
Dubbo的基本架构?用的比较少。Nacos和OpenFeign用的比较多。问区别。
反问:
机票部门的。
介绍了下业务,用redis、mysql这些。
9/14二面
34min。
自我介绍
数据查询,如果查询的数据有很多,有时很少,你怎么处理呢?我说的是可以使用limit来实现,但是limit很大的时候,会很慢。所以可以先seclet 主键id来实现。
然后面试官说,其实考虑的太片面的,也需要反向考虑下数据库怎么优化?比如主键用biginteger等等?
用redis如何做分布式锁 setnx+ex,然后问我为什么分布式中这样就能做到呢,不会出现问题,我说redis中执行语句是单线程的。又问新的版本中是多线程怎么处理?我回答的是新版本中多线程是对IO中写入语句的时候用了多线程,执行的时候是单线程。但是我感觉我忘了一个点,就是忘了说redis中执行setnx+ex这个语句是原子性的。 当然前面如果释放锁的时间太短提早释放了,那么就有问题,所以可以用一个lua脚本将判断是否是当前线程的锁和取消所(删除key)原子实现,这个没说,面试官直接问问题了🙈。
Redis的bitmap的位数,有限制吗?这个我不知道,没看过还得看看。
(redis中bit映射被限制在512MB之内,所以最大是2^32位。建议每个key的位数都控制下,因为读取时候时间复杂度O(n),越大的串读的时间花销越多。)
联邦学习项目中技术栈是不是有点杂糅?用python的话分布式不应该用啥啥啥吗?我说我其实就是一个rabbitmq通信的一个过程。
大数据及框架handoop了解吗?我说没用过,mysql,redis用的多一些。
Mysql的隔离级别,最高的是什么?我说blalala,然后串行化最高,解决了脏欢不可重复读,而且是串行的,可能效率有点低。
你的通信用的rabbitmq,那么在消息可靠性上如何保证?重复消息怎么办呢?
生产者到broker的confirm,bnroker到消费者的时候手动确认机制,持久化。当然如果kafka的话其实可以确认的时候给一个offset,避免了重复。(这个是面试跟我说的,说主要是想问下根Kafka的区别。)
目前有哪些offer了?
什么时候能来实习吗?可能得明年大论文交完吧🙈。奥,那还是个很遥远的事情哈哈。
有哪些意向,测试,数据开发,后端开发,可能侧开不是很好,但是数据开发和后端开发还是可以的。
中途面试官电脑还没电了,等了1min。
可能由于没有实习,都是自己做的一个项目,可能稍微弱了点,不过也没关系。
还说我说话有点谦逊🙈。哈哈
反问:
我反问面试官是什么部门的?机票的数据,向我介绍了一些业务。
我是二面吗?邮件上只给我发了让我面试,我也不懂几面?说了二面。
携程的话大部分的岗位应该都是在上海长宁吧?对的,就一个火车头的地方??其实我不知道哈哈。
9/16HR面
我了解到携程是一家1999年在上海创立的一家公司,就比我小了两岁。
它将传统旅游业与现在电子商务结合,目前我们可以通过携程酒店预订,飞机票火车票订购,景点门票订购等等,目前在17个城市有分支机构,可以说是出门在外不可或缺的部分。
之前我是用携程的时候,还关注到了他的图标是一只海豚,当时还去查了一下它的寓意,大致意思是:海豚一般亲切、友好和乐于沟通,是旅客可信赖的朋友。然后海豚向上腾跃,充满动感活力,体现了携程在移动互联网、云计算时代引领潮流。 觉得很有新意。
自我介绍
看你简历,后端项目挺多的,为什么报数据部门呢?都考虑,blablabla。
介绍介绍你自己的的性格,优点缺点。
你是说话慢性子的吗,看你讲话还慢条斯理的?嗯是的,但是现在稍微有点紧张。
选一个项目介绍一下亮点,还有难点,你在项目中扮演的角色。
没有去实习过吗?
跟同学们出去玩,你通常扮演什么角色?协调的还是提出建议的等等。
为什么选择携程?你是携程的忠实用户吗?
目前的面试流程有哪些?说到荣耀的时候说,目前已大部分都在荣耀池子里泡着呢?
家是哪里的,考虑哪里的工作地点。
我回答浙江湖州,然后考虑江浙沪多一点,然后北京这些地方呢,如果能带两三年再调回来是最好的。
然后面试官说先北京两年一开始在北京社保,后面落户上海不好弄什么的。
反问:
面试官您是机票部门的对吗?想问问机票部门内部的划分是怎么样的?每一个部门都是内部都有完整的小部门,blablabla。
内部对新人的培养是怎么样的。因为我们一开始进来的话可能需要一个适应的过程?blablabla。
后面还有面试流程吗?说了英语测评,然后过了的话会打电话什么的。前几年是六级过了不用的,但是今年都要。
其他的记不清了。
同花顺(9/5笔试、9/15一面、9/30二面、10/10HR面、10/22谈薪)
9/15一面
自我介绍
整个项目的亮点是什么?
秒杀的接口,你是有什么呢?具体的测试流程是怎么样的?
我说了一些优化,查看堆内存,更改堆内存的新生代和老年代的分配,从并发量550到600了。
项目中遇到的难点是怎么解决的呢?tcpdump是怎么找到的呢?我说一开始用的chales,发现不能通过端口看,然后网上查能看端口的,找到了tcpdump。
对微服务架构的理解。
Mysql数据量很大怎么优化呢?
我说了先优化表结构,然后索引问题,分库分表,redis缓存等等。
分库分表会遇到什么问题呢?你打算怎么解决?分库分表的话需要子查询,外键查询什么的了。然后我说了可以建立主从增加高可用性。他问我这个主从是只有分库分表采用吗?我说不是,我临时想到的。🙈
Mysql索引有多少种?(忘记回答组合索引了)唯一索引和主键索引的区别是什么呢?
事务的隔离级别?事务隔离级别中是用锁了嘛?我回答了序列化中肯定加锁,因为串行,然后可重复读的时候,通过间隙锁和记录锁解决幻读的问题。至于其他的我可能想不到了。
MQ使用场合?主要一个异步,解耦合,削峰填谷。
Rabbit如何保证消息可靠性的呢?我说了confirm,手动ack等等。然后面试官问我,如果生产者发送到broker的时候,broker返回成功了,但是此时宕机了,没有持久化怎么办呢?换个说法就是如何优化写入磁盘的操作呢?
平时怎么学习技术的呢?为什么想先看视频?有没有看过一些官方文档之类的。
准备的:如果是一个成熟的技术,我一般会先看视频为主,因为这个成熟的框架,在视频中别人已经把精华的东西给我们筛选了,而且看视频更容易理解。
然后可能回去看看官方文档,毕竟官方文档更全面,看了视频之后再看这个应该没什么压力了。
然后再自己动手代码实践的过程中,肯定还会遇到问题,那么这个时候就谷歌、stackoverflow、等一些博客搜索,有针对性的学习。
对自我的一个评价。优缺点。平时爱什么运动?
自己有没有有意识的关注过设计模式之类的,还是关注功能实现。
反问:
刚才的问题?如果Kafka优化持久化的?其实Kafka的写入用的是顺序写入,而不是随机写入,所以更快一点。
或者说同时发消息的时候先缓存,然后批量发送等等。
然后就是零拷贝处理啊什么的.
部门用的什么技术栈?Kafka,mysql,mangdb,springboot,spark,mybatis等等。
9/30二面
45min
自我介绍
发表的论文,具体说说。
研究生期间怎么安排的?
然后就是联邦学习系统,就是问的一些原理之类的。blablabla记不清了。
一些常规八股。
平时看过关于Java的一些书?设计模式,JVM,JUC,还有Java基础这些。
说说JVM的垃圾回收机制。
从可达性分析,引用计数。三种算法。两个回收器。老年代、新生代等方面进行了介绍。
Mysql的数据量自己用的时候多大?自己的挺少的,但是我知道对大数据量的一些优化。比如索引、缓存、分库分表等等。
分库分表如何实现的。水平和垂直。如果两个的话只能分成1/2吗?那不是的,但是不平均的话,可能会有数据倾斜等一些现象发生。
Linux操作系统了解吗?用过,一些云服务部署之类的做过。还有常用的命令之类的是了解的。
进程之间的通信?我就说了消息队列。其他的居然想不起来了。碎碎念了一些。问我共享变量可以吗?我说共享变量是线程之间的(麻了,下来一查发现错了)。
你说你用过docker部署一些东西?是的,就是这个现有服务的部署,但是比如说自己的本地项目用k8s部署什么的事没有做过的。
Docker部署和本地部署的区别?轻量,blablabla
想想这么一个例子(还以为大的要来了,结果是一道智力题目。)
如果要维护人的一个正常机能的运转,需要消耗多少度电,随意发挥。
一开始想法心脏消耗多少,脑子消耗多少,合起来。
然后又考虑了能量守恒方面,吃进去了多少东西,这些东西是需要多少度电的。
有看过一些底层架构之类的吗?我说HashMap的,关于SpingBoot的比较少,有时候只是一眼带过。
那你觉得看底层会有什么好处?
如果自己写代码的时候遇到了一个bug,网上有很难找到,那可能跟底层代码发生了一些冲入。或者说,了解底层的话,可能对bug的查找会有很大的帮助。
还有就是底层有很多优秀的设计模式,代码风格,这对于提升我们自己的代码风格和代码能力有很大的帮助。
了解同花顺吗?啊这。我以为只有HR面才问的🙈,麻了,就说了是一家金融的,稍微blabla。
职业规划?目前考虑走技术路线。blablabla,刚进入的时候,是从一个学生身份转变的过程,然后得向自己的导师同时学习,了解公司部门的各种需要了解的掌握的技术。然后后面就是提升自己的技术架构,
你是温州的吗?不是,浙江湖州的。
父母是干什么的?查水表呢🙈?哈哈哈。没事儿照实回答了。员工。国企吗?不是,一家上市企业,但是工资不高。
薪资?18k~20k之间吧。18k一下就不考虑了吗?我说,那不是向下浮动也兼容。
有offer了嘛?offer没有。那有意向了吗???问这么清楚?没有,两个池子在等。
以后想从事那个领域的工作?我说都行,金融的话我银行也投了,还是看岗位匹配度吧。
父母对你的工作的看法?让我留在杭州,最好是在杭州,当然还是看我整个个人的意愿。
反问:
部门具体内容?技术栈?一面没说技术栈吗?emmmm,隔得有点久了,我给忘了。
前面您说就是有没有想做物联网方面的研究的想法?是咱们部门有这个又要这方面的研究吗?
10/10HR面
52min,哈哈哈,hr面试也能面这么久🙈。
自我介绍
成绩方面的问题。
最近有看什么书吗?印象最深的内容?
平时是怎么学习的?视频、官方文档、博客。
这三个里面那个最重要,视频,占比很大,而且像我们平时上课,不也是视频吗,只是少了互动。
Bilibili真的资源很多,还看别的吗,抖音什么的?
嗯,bilibili居多,抖音还是我因为我看我爸妈在刷所以才下载的。关注了他们,他们发视频我也能点赞什么的增加一些交流。
然后还补充了,我觉得抖音的话可能相对而言被动,虽然有算法,但是你也不知道下一条是什么,就被动的刷了。bilibili的话是需要主动的,你想看什么,就去点什么。
近段时间有学什么新的东西吗?抛开技术?那就羽毛球,游泳呗。
平时除了运动,有什么别的爱好吗?
父母情况。
你觉得外面互联网中,让你觉得最好的产品。说了抛开智能手机,小米台灯。
对你影响最大的一个人?我说抛开父母之外,blabla
你为什么不想读博?
说出你的三个性格方面的词语?
说出你最喜欢的城市?
你投的城市有哪些。
目前投了大概多少?
有面试的有哪些?
有hr的有哪些?
你对这些公司怎么排名?
了解同花顺吗?
那里了解的?
有炒股、买基金之类的吗?
看好哪些领域啊? 我说芯片行业。
你希望公司中的同事是怎么样的?
能来实习吗?首先说很想来实习,然后blablabla
反问:
导师制度怎么样的?
后面大概多久会有结果?因为分批面试的,要等所有人都面完才会有结果,所以可能还要1~2周的时间。
HR介绍同花顺:
Tob、toc、ai智能三个部门方面,还有数据部方面。介绍的可太详细了。
然后薪资情况(不会打折扣等等)、加班情况(大小周、9点、弹性、10点以后可以报销车费)、环境方面(健身房等)。
“你可以加我一下微信,到时候方便联系。”
然后我直接问了微信,加了上去。
中兴(9/8笔试、10/12线下一面、10/13线下二面,10/19谈薪)
10/12一面
自我介绍
岗位地点
喜欢偏底层的还是偏应用层面的?
会计算机的什么课程?操作系统会吗?
排序有哪些?
二分排序会吗?我以为归并排序,原来是对插入排序的改进。
线程和进程的区别?
Linux用过哪些命令?
SpringBoot的启动过程。
Yaml和application配置文件的区别?
Python会吗?可变参数和不可变参数的区别?
科研项目是怎么样的?
反问:
忘了问啥了。
大概也就是部门技术栈吧。
10/13二面
2面也是两位,应该是类似于hr面,不过说的是主管面。
24min
自我介绍。
岗位,第三志愿怎么还写了成都?
薪资。
做的联邦学习介绍一下。
难点等等。很多忘了。
难点里面说了一个不能用socket的问题?知道我用ssh是怎么连接的么?
抗压能力怎么样?优点缺点?
有没有女朋友?
挺多忘了,大同小异。
反问:
忘了。
经纬恒润(9/15笔试、9/5一面、10/10二面,10/27offer)
9/5一面
自我介绍
整体讲讲这个联邦学习中控系统
讲讲放大众点评系统的内容,主要讲了Redis,我说了下一些数据结构,然后面试官问ZStack是干啥的?然后问了过期策略,淘汰策略。
RabbitMQ是干什么用的,我里面讲到了分布式事务,分布式事务具体是什么?有没有用阿里的senta?有没有用过kafkak?区别
为什么选择用ElasticSearch?他的索引结构了解吗?
Docker用过吗,如果开启docker,进入docker,查看docker的状态。
哎~,后面打电话说2面的,后面又说改时间,然后给我做了一个笔试就没有消息了,麻了我都。
09/30更新,今天中午打电话给我说,国庆上来,10号进行2面。
10/10二面
37min
keynote介绍,将近20min
第二个恐龙商城是学习项目,就没有问。
只问了联邦学习这个科研项目。背景、模型融合怎么实现的。
有参加过代码编程之类的竞赛吗?
只参加过校赛。
有刷题吗?
有很多,leetcode目前300+,现在的话刷笔试题目比较多,然后dfs、bfs、回溯、拓扑排序等等的都会。
看过什么书?
设计模式知道什么?
说出个人的优缺点。
还有一些忘了。
反问:
部门分类,业务。
我是哪个部门的。
新人培养制度,有导师制度吗?
浙江至控研究院(10/14一面(主管+技术),10/25谈薪)
10/14一面
52min
自我介绍
第一个有点像主管
哪里人?
对联邦学习的详细拷问,算法方面。
还有就是发表的小论文方面。
参加的竞赛之类的。
本科成绩等等,问了挺多,司空见惯的。
技术问题
第二个居然是女的技术人员
联邦学习的数据怎么传输的?
reis数据结构用了哪些?zset,bitmap有什么优点。
恐龙商城拆分的多个为服务?
redis的持久化?
nginx反向代理?
get和post区别。get添加会怎么样?
mysql的隔离级别?
索引的数据结构?
索引挂什么数据?
spring的ioc和di?
di和面向切片区别?
全局配置文件?
从全局文件读取数据用什么注解?
注解有哪些?
类加载的过程?
垃圾回收的算法?
反问:
是湖州的吗?
为什么官网没这个岗位?
工作时间?
公积金?
湖州子公司的研发人员的规模?
邦盛科技(10/10笔试、10/11加笔试、10/13一面、10/13HR面,10/19OC,10/27谈薪)
10/13一面
自我介绍
Redis了解哪些?比如说说RDB,主从同步的过程。
Fork用来dump的子进程,和本来的线程的内存关系?我没看,我说有一个写时复制技术,面试官说差不多这样。
Redis为什么用单线程还是这么快?比mysql快了一个量级。因为基于内存。瓶颈只要来自网络IO,所以多个线程执行命令快不了多少。后面虽然引入多线程,只是在IO的时候引入了多线程。线程切换比较消耗内存。多线程的话会有安全问题。
nginx了解多少。
常用的排序知道哪些?
经典的快速,优缺点说了?然后问正向排序还是反向排序复杂度是O(n2)的?我说了逆向,其实都很差。
我们现在看一下快速排序的时间复杂度。如果每次分划操作,左右两个子序列长度基本相等,则效率最高,其最好的时间复杂度为O(nlogn)。反之如果每次分划操作产生的子序列其中一个为空,则快排效率最低,其最坏情况为O(n2),这种情况发生在原始正向有序和反向有序。平均时间复杂度为O(nlogn)。
还有就是堆排序,归并排序、冒泡排序等等。
NIO和BIO了解吗?
ES了解多少?倒排索引?
小论文大概讲了什么?
联邦学习的背景等等。
你说租的GPU服务器不能用socket?这个稍微讨论了下,我感觉我讲的不是很清楚。下面梳理一下。
网上租的就是一个GPU和机器学习环境的linux系统,的一个docker容器。然后ssh连接的时候端口也映射出来了。相当于我只能在这个docker里面操作,而不是docker外面操作,所以端口映射什么的都出不来的。
然后问这不搭建 了个系统吗?然后主要是拿了下考官的笔,稍微讲了下算法。
有offer吗?
其余的忘了。
反问:
部门划分?到时候如果进入了,是去您的部门还是统一分配?
Blablabla讲了些风控的例子,然后说看了我的简历还是挺希望我去他的部门的。(不知道是不是官话?)
培养制度,导师制。
后面还有几轮面试?
说不知道我是两面还是三面?然后让我先去外面等着,第二面HR面是肯定有的。(后面才知道这个人是个技术总监)。
10/13HR面
自我介绍
哪里人。
学java以来,遇到的最大的困难。
技术上的难点?说了机器人万向轮方面。
了解邦盛吗?金融风控公司。然后把一面的面试官跟我说的,银行卡交易的钱0.1s要做的所有的事情说了一下。
然后说报了了岗位,java、java交付、测试,说测试你也愿意来吗🙈。然后这里我就反问了,java和java交付有什么区别呢?
这里跟我说了好久,整套流程都说了。
研究生都做了些什么?
最早能来实习的时间?写的明年4月。
有offer吗?
其余的都类似,也记不清了。
反问:
公积金?9.6%,按照80%的工资的12%来的。
部门的划分?说跟上面我说的流程中的各个职能对应。
工作时间?
有没有休闲场所?健身房等?
后面说,上一面面我的是技术总监,不知道还要不要下一面面试?
然后后面跟我说,面我的不在,到时候准备线上,就先回来了。
华为(8/31笔试、9/24一面、9/28二面、9/29HR面,等)
9/24一面
自我介绍
全程只有一个八股,就是笔试前问的一个,说一说,缓存穿透雪崩击穿的由来,以及解决方案。
一上来问,都是自己的学习项目啊?什么什么的。然后就挑了个科研项目问,商城直接无视🙈。
然后问科研项目。说说项目的背景,实现方式。
然后针对我说的分布式的功能,中控系统的功能,细节深入交流了一下。
面试官自己最后说出了整个他的理解,我稍微修正了一下其中的一个点。
后面我加了句,可能这个系统主要实现功能为主,一些系统稳健性,rabbitmq消息的丢失等问题没有考虑,下面两个项目考虑了。
这时候面试官就说,那你这个系统里面,如果其中一个节点宕机了,但是中控需要等到所有节点都完成才能进行下一轮,那不是阻塞了吗?我说我当时是没考虑,但是这个是有办法解决的。借鉴其他的集群系统中的心跳方法,每隔一段时间发送数据,然后分布式节点得到消息后,返回带着自己特有ID的消息,就知道目前存活。如果超时时间内收不到,那么在重发几次(因为可能网络等原因),如果发现了问题,要么抛出异常日志,要么告诉管理员,或者写一个重启脚本来重启,或者最直接的,不要他了。
然后问论文,论文的背景,主要让我讲一个应用场景。blabla
然后时变因素是什么,具体一点。blablabla,引入了TEG,基于此提出了两个算法。
算法里面的路径算法。
然后leetcode1190。
写得有点久了,写完总的时间一小时都多点了,然后讲了一下思路,直接反问。
反问:
有点忘了。
部门业务,技术栈吧?
9/28二面
自我介绍
项目一个个来,妈耶!考了很多业务场景题目。
总的来说,都能说出来一点,但是总感觉自己说的不好,因为没有遇到过呀。
首先看第一个项目🙈。
整体的流程是怎么样的,rabbitmq的发送是怎么样的?
其中某一个宕机了怎么办,如何处理呢?心跳,前面的一面,问过。
放大众点评里面用到了很多redis。
Redis分布式锁是如何使用的?setnx + ex,+lua脚本的判断
为什么说setnx是原子性的,远离知道吗?我只说了因为他是单线程的。
然后问set求共同关注。
我说,利用set集合的求交集,可以求得。
那如果不是两两求交集,而是我自己,要跟很多人比,求出与很多人的共同关注最多的,那数据量不是很大吗?怎么办呢?
我当时说了点其他的,然后想了一种曲线救国的方法🙈,借鉴redis的key的删除机制(每次随机取出一些key),每次随机取出一些用户,然后比较,而不是全部比较。然后每次更换部分随机用户。
ThreadLocal用过吗,内部原理是怎么样的?
每个Thread维护一个ThreadLocalMap,然后以该ThreadLocal这个对象为key,去取值。
然后会有一些内存泄漏的问题,具体讲了一下。
那你说说强引用和弱引用的区别,弱引用我貌似有点说错了。
然后说你不是说,ThreadLocal是线程之间隔离的嘛?那如果需要线程之间访问同一个东西怎么办呢?
我说了自己遇到过开辟另一个线程远程调用的时候没有cookie的信息,然后放到一个共享的HolderContext里面,然后另一个线程拿到,然后进行远程调用。
最终一致性,利用RabbitMQ是如何实现的呢?
我说了主要是库存的问题,blablabla,然后用了延迟队列,如果最后有订单没有那个啥,那么自己释放。
好像此处还有点什么,忘了。
手撕代码,三数之和。
我看题目的时候,说了下题目的归纳,抽象了一下,就是一个数组里面找n个数字,然后和需要为target,求所有的方法。
那这样的话,我肯定用回溯做了。然后问了我时间复杂度。
后来才想起来,三数之和,先确定一个,再双指针啊。
问题
然后手撕代码很快,10min最多,然后看时间好像还有,就又开始问我问题了。
如果一个消息被重复发送,如何解决?我说这是一个幂等性问题,用一个唯一的ID,或者分布式锁解决。我觉得虽然没问,但是我也可以强调一下kafka的offset机制可以避免重复发送的问题。
那如果消费者收到消息,然后消息处理到一半,还没有处理完一些数据库的消息之后,宕机了怎么办呢?
我blablabla,一开始还没反应过来,以为就是重复消息的问题。
后来才知道首先消息需要回滚,我也说了回滚,但是忘了把分布式这个词数出来了。
反问:
技术栈
最后一个问题怎么解决?分布式事务呀,seata什么的,哎呀后悔了。
9/29主管面
50min
自我介绍
看起来下面的问题很少,聊了足足50min🙈。
全程 科研项目,问清楚过程,然后提出自己的看法,比如跟分布式机器学习,模型泛化性等等。
说说某个项目的难点。
然后就问平时有什么爱好?
都是别人叫你出去玩吗?被动的还是什么?
对半开吧,很多事情都是相互的。
希望公司是怎么样的?
可能在物质方面什么的,给不了互联网这么多。还有可能相比其他互联网而言blablabla。
我说没关系啊,核心价值观等等的输出。
然后你来我往。
然后说虽然华为现在有了很大的成就,但是其实周其实很长的,你会动摇吗?
以考研举例。
反问:
导师制,培养制度,资源情况。
工作时间。
招银网络(9/5笔试、9/26一面、9/28二面、10/9HR面,资料审查)
9/26一面
自我介绍
自我介绍的时候,说到科研项目的时候,稍微问了下这个是自己的毕设,还是什么blabla等等。
然后该面试官主要是对,科研项目里面的联邦学习系统进行了询问。
整体的一个背景,和流程。然后再问再答,直到了解。
然后提出分布式设备实时更新数据怎么实现的?这样是不是有问题呢?上报,直接更新到数据库。直接连接吗?是的。这样的问题?
然后我又说,这个项目做的比较早,当时可能对一些东西没有很好的掌握优化。
问我那你现在觉得你这个项目有什么问题?
我说了三点
1、分布式设备上报数据不能直接连接。最好后台给出一些上报数据到数据库的接口,让分布式设备调用。
2、rabbitmq做的时候没有做到数据持久化,可能有丢失。生产到broker和broker到消费的确认机制是做了的,但是broker本身的持久化没有做,可能会导致数据的丢失,首先要做持久化,然后需要做主从,这样一个丢失也能保证消息还在。
3、分布式节点的宕机问题。心跳检测。然后后面的重启脚本啊等等。
然后就是一些常规八股。有点记不全了,今天四场笔试,全部笔试完了再来记录的,没有太多时间。
HashMap是如何保证安全的?
我说HashMap有安全隐患,得用ConcurrentHashMao或者HashTable才行。
讲讲ConcurrentHashMap的内部实现?
数组+链表/红黑树,然后细粒度的元素锁,然后CAS和Synchronize混合使用。
讲讲CAS乐观锁出现的问题?
我说了一个CPU自旋,很浪费CPU。
但是其实还有ABA问题,以及只能对一个变量进行乐观锁操作。
问了我数据库会用什么?mysql和redis。
mysql的having,是什么用途?
我当时说的是,用在group by筛选后面的,对一个数据进行分组之后,然后用having进行条件判断。
然后还有的话,可能忘了。
手撕算法
给你很多个区间,合并重叠的区间。
我当时使用的是,一个优先队列,每次第最前面的,然后和后面的合并,如果重合,融合在于后面一个判断是否重合;如果不重合,直接加入ans。
然后我又提出了一种方法,就是枚举1~n这个最大值,判断每一个是不是都在区间里面。因为整数,感觉确实可以。
反问
部门,技术栈。
刚刚的CAS还有什么问题?
9/26二面
自我介绍
Mysql的隔离级别。
各自解决了什么?你自己实践过吗?完了,只能说没有了。
那里面的数据表的设计,是你自己设计的嘛?
这个问题是我说了前端代码是网上有的,之后,他问的,麻了,早知道我不说了,多嘴。
前面还有些忘了。
创建线程的三种方式?为什么要有这么多创建线程的方式,我说了扩展性好,然后Future的那个有返回值。
你用过线程吗?提交订单的时候,需要开多个异步线程。
给你一个基本有序的数组,用什么方式排序?我自己思考了快拍冒泡等等,然后说插入排序可以最快,因为每次是对有序的数据进行排序的。
然后问我对时间复杂度和空间复杂度的了解?
我说主要是时间复杂度主要是根据数据量的规模来的,看for循环,递归什么的。貌似对此回答不是很满意。
做项目中遇到的最大的困难。
然后问了一些计算机网络的。
说一说一个url输入到页面显示的过程。我都说了。
三次握手和HTTP请求是一起的吗?啥意思没太理解。
我回答的是,需要先三次握手,然后才能发送HTTP请求。
里面有提到DNS,问我DNS用到的协议?这个没回答出来🙈,才知道是UDP,之前没怎么看。
然后就是给我一个场景。手机上登了微信,电脑上要扫描二维码登陆,整个流程怎么设计?这个我看过的,说了。
那么这个二维码需要包含什么内容了?我只知道需要有关电脑的唯一标识。然后一开始没有账号信息,二维码也不用存。
问我投递这个岗位有什么优势?从掌握很多技术栈,然后性格方面阐述。
觉得自己是一个什么样的人?优缺点方面阐述。
你是做过移动端的是吗?我说了做的蓝牙app,然后与机器人通信,达到了控制和调试的功能。
你们学校在招银的多吗?(然后面试官直接在电脑上查了,说蛮多的🙈,麻了竞争对手多啊)
然后就是是想留在杭州吗?我说是的,能进招银更好。哈哈
反问:
技术栈
部门
感觉没有一面答得好,主要是一开始的实践过吗?为什么要这么多创建线程的方式,没答好,但是只能实话实说了,然后心面感觉会有影响。
10/9HR面
招行总行信息技术部下的子公司。
相比于其他银行系统,它在计技术、薪资福利方面肯定是第一梯队的。
相比于其他互联网公司,又不是那么紧迫,属于是一个权衡了。
这是我认为的理想的工作。
独立、积极、锲而不舍、善解人意、创新
20min
好快,自我介绍都没有。
问湖州人,选的岗位的地点,和公司。
是一般偏向于金融方面的科技刚比较多一点吗?是的,相比于互联网方面,更加的平衡。
那你对于公司的一个工作强度怎么看?
其实来说,对科技岗位加班还是常态的,我觉得一般9、10点都没问题。
介绍了一下他们公司的工作情况,你觉得符合你的语气吗?
我觉得很符合,毕竟现在在实验室,每天差不多都要10、11点多才走。
问了下本科、研究生的成绩。
有获得国奖吗?没有,获得过浙江省政府奖学金。
本科期间是电子信息科学与技术的?
培养计划是我们班主任定的。是的,软硬件对半开。软件方面、python、java等等都学过。
那你python什么的也用吗?是的,现在研究生阶段机器学习的话得用python。
所以java用的是最多的吗?也不是,我自己的科研系统,就是用java搭建的后台。
反问:
部门划分、进去之后随机分配吗?
按照匹配度之类的,统招。
进去之后的培养制度?有导师制度吗?
今年杭州这边后段的hc多吗?与去年差不多。
我觉得差不多已经是一个很好的水平了,毕竟今年很多公司都在缩招。
转正的百分比?
宿舍情况?没有。没事,我也就是问一下,其实很多互联网公司之类的也都是没有的。
然后说了如果后续通过的话,会有一个资料评审,然后评审结果1~2周出来,主要看是不是资料都是真的。
问了下成绩单一定要盖章吗?
兴业数金(8/11笔试、8/17二面、9/2HR面,资料审查一个多月了)
滴滴测开(9/17笔试、9/26一面、10/9二面)
9/26二面
自我介绍
分布式锁和幂等性?用了redis的分布式锁解决了幂等性,然后blablabla。
问我setnx的key只用用户吗,那不是别的场次该用户也不能抢了吗,ttl是怎么样的?
提出了用订单作为key,下来后我想了想young当前商品的id+用户id来实现。订单key的话貌似也行。
削峰填谷的问题?Rabbitmq来完成blablabla,然后其实我很害怕他问数据一致性的问题了,属实是ptsd了🙈。
RabbitMQ如何解决分布式的?死信+TTl,最终一致性。主要就是订单取消了,那么需要解锁库存。然后订单支付了或者那么就不用解锁了。
如何解决超卖问题?redission信号量,第三方的。
然后我解释的时候用了redis里面放值,然后每次查询,减。
并发安全?Lua脚本实现原子性质。
当然我前面说的redission的信号量是第三方的,其实原子性什么的都已经考虑进去了。
然后面试官突然想到,那有时候有些场景,我可以有超卖一点东西。因为大家下单了,也不一定会支付。
我其实有点难以理解,因为玩意都支付了怎么办呢?
然后后面面试官说,主要是先信号量可以设置多一点,然后动态调整这个库存,就是在秒杀的过程中,如果下订单支付订单是很多的,那么动态减小,如果很多人都其实不支付的,那么动态增加。
我补充说,我想到一种,再支付的时候在判断库存,没有的话就不让她支付。
面试官说,极端情况可以。但是体验非常不好。
问我消息中间件看起来rabbitmq用的多呀我说是的,还有什么吗。我说了解kafka。
区别?
Kafka吞吐量大,一般高吞吐量的都用它
Rabbitmq路由更加灵活,同时执行速度很快,us级别,比kafka快。
我当时用这个是因为kafka配置更加麻烦一点,还有zookkooper,而rabbitmq只需要ocker部署即可。
有一些想不起来了。
为什么想到这几个学习项目呢?
然后问我看你Java技术栈掌握的挺好的,为什么想到来测开呢?
主要的意思是权衡了今年的竞争压力,感觉还是得诚实一点。
我们这边其实跟你的技术栈是很符合的,blablabla。
你觉得你做侧开有什么优势吗?或者说你觉得测开是怎么样的?
我讲了很多,但是面试官讲了更多,真的挺好的。
主要有一点,我懂一些技术栈,所以可以更好的做一些白盒测试等等。
然后说,看你字里行间,还是测开是第二志愿呀。
我说,能做测开我也做的。因为。。。说不出来了🙈,工作不好找呀。
反问,没有手撕吗?
本来是准备了的,看聊的比较久了,然后也挺好的,就没了。
准备是准备了的,拿来一题吧,讲讲思路。(md,多嘴了呀🙈)
海量数据,数据的内容只有int整数,给你一个数据,如何查找最快?
一开始没有太懂,以为就查询一次,直接一个个查询呀?
说是以后每次给你,查询都要快。
我先说了先用归并将数据排序,然后每一段数据标志出这段区间的数据,然后二分。
面试官说,你考虑是一个32位的整数,可以考虑数据压缩吗?
啊奥奥,用一个很大的2^32的个数的二进制书,如果数字n存在,那么相应的位置置1。
反问:
部门,技术栈。
做石油能源的貌似。
10/9二面
37min
问的挺多,不难,面试官人也挺好的,没有为难。
自我介绍。
你也知道你报的是测开岗位,对测试开发的了解。
Blablabla,当然也诚实的说了,可能后端了解的更多一些。但是也可以更好地进行白盒测试。然后权衡了今年就业的竞争压力,所以投了滴滴测开,我挺想进滴滴的。
黑盒白盒的区别?
联邦学习的运用场景?
难点?
有了解过kafka吗?为什么不用呢?
介绍了两者的区别。然后说考虑到rabbitmq的路由的灵活性以及传播方式,然后kafka的部署稍微复杂一点。
怎么想到做性能测试了?
你有没有想过并发量是550之后,有没有考虑过是什么限制了并发量?
我说了redis的内存不够?本地电脑CPU不够?等一些问题。然后又补充当时的秒杀已经做了很多优化了:rabbitmq的异步,削峰填谷,单一微服务,nginx动静分离等等。
(我感觉可以这么说:我知道其实做优化,最主要的还是代码层面的优化,然后就是逻辑方面,这一些我当时都已经查了很多资料做好了,比如rabbitmq异步,nginx动静分离等等,然后我就考虑是不是redis的内存不够了?cpu性能问题等等?当然一开始是说了JVM的对内存调优的)
性能测试的时候有没有遇到一些bug之类的?
给你一个场景,比如登陆,需要账号密码,你考虑哪些一些测试用例?
mysql的慢查询?
讲了如何开启日志?然后索引方面?
然后讲了如何解决就是分库分表,慢查询之类的。
为什么索引比不索引快?因为排好序了,二分查找呀。
索引底层怎么实现的?也是B+,顺序,类似于二分查找。
Redis的击穿问题?讲了由来和解决方案。
Hashmap的查询时间复杂度?O(1),最坏情况呢?O(logn)或者O(n),看数据是链表还是红黑树?
Hashmap线程不安全,会带来啊些问题?数据覆盖,1.8以前由于头插法扩容时候的死循环问题等等。
项目里面的难点?
介绍了恐龙商城的调试。
没有手撕。
反问:
到时候我过去的话,是去哪个部门,统分的还是跟你一起的部门?
脚本的话用什么语言?都可以看自己。
部门的业务?
技术面一共几面?
去哪儿旅行Java后端(9/26一面挂)
9/26一面
足足1h,因为面试官在一个地方集体面试,太吵了。
自我介绍
介绍完了之后问我消息队列的削峰填谷是怎么做的?
我说前面部分与redis打交道,完成redis库存的减。然后这一部分算完成了,你把这个信息发送给消息队列,后面专门有一个消费者,来处理后面的订单完整的创建的过程。就是前面与redis打交道,后面与mysql打交道。
然后说,那会不会产生redis和mysql不一致的问题呢?
(有一说一,这里面的一致性到还真的没有考虑。)当时我没回答好,说什么分布式事务,会回滚什么🙈,其实分布式事务不在这里。
然后面试官说,就是这其实是一个看谁的问题,就是最终保持与redis一致,还是与mysql一致?
我说这里应该得看与redis一致,然后问我怎么一致?
我先说了先写数据库,然后删除缓存。🙈
他说你不是要与缓存一致吗?怎么做呢?就是缓存覆盖数据库的过程,是在业务执行过程中覆盖呢?还是业务执行完了覆盖?
我说如果可以的话,对业务进行回滚,在覆盖🙈。
但是貌似不对。然后又思考了一会儿,回答不出来了。
(哎,感觉就是前面的说错了呀。首先这里面我觉得一开始产生不一致的源头的搞清楚。因为这里面前面处理redis,后面处理mysql,如果产生不一致,那么可能是后面的消费者处理的时候,出现了问题,所以需要有消费者ack确认机制等等。是吧,然后他问的几个别的问题稍微思考下吧。)
联合索引六个例子,判断,为什么⑧也符合最多原则?优化器优化。
(我自己说一下对上面这个的见解。就是说,如果秒杀的时候,rabbitmq发的异步消息,然后rabbitmq宕机了,那怎么办,redis的缓存库存和mysql不一致了呀?
那我觉得宕机了,那肯定首先是要对rabbitmq做主从,做到高可用,让他能够保证最终一致性。然后就算如果真的宕机不一致了。因为这是秒杀跟库存有关,而不是一般情况的读多写少的缓存商品库存的场景。感觉还是得需要做到看缓存,而不是看数据库。那如何最终同步呢?最终库存为0同步就行了吧。??)
然后给场景,一只有一个打印机,如何处理高并发的请求。
我说一个队列放需要打印的东西,然后有一个epoll的多路复用技术,可以并发的监听。
说不要说底层的,得说实际代码能用的。
我说创建线程池,去接受请求,然后请求的数据放入队列中,开一个另外的线程打印。
那么问题来了,另外的那个打印线程,怎么样监听到数据呢?就是难道一直CPU轮训吗?
我说countdownlatch,或者线程有数据后发送信号给打印队列,打印队列进行打印。
给你三个线程,如何等待三个线程完成,在干别的事情呢?
我说用join,主线程创建,然后join。
他说如果线程数目很多呢?
我说可以用signal,都满足之后,再进行下一步。countdownlatch。
反正面试官给我的感觉总是我不对,但是我感觉好像对的呀🙈。特别的上面的那个join,说了很多他好像不知道这个join的语法🙈。
问了我单例模式有哪几种,我说了饿汉懒汉。 然后出了常见的还有双重检查,静态内部类,枚举来实现。然后枚举可以有效的避免被反射和序列化。
手写单例模式,volatile拼写不对,不过单例写出来绰绰有余。
然后就是sql语句,写出每一个班级的最高成绩的同学名称。
我用了group by having score = max(score)
看得出他不想让我这样写
又问了我如何写每一个班的前两名成绩的同学。
我打算用group by后面orderby得到前两名,但其实是不行的
后面没有写出来,而且用limit也不对,因为limit只能拿到所有的前两名。
后面反问问了面试官,然后说需要over函数,rownumber函数等等,这就确实有点超出我的范围了。(后面我自己学了,确实是简单的。)
然后问我实验室都干了什么呀,我说科研,然后这个中控系统是我做的。一篇论文是在物联网的基础上发的。
然后问是不是代码敲得比较少,我说这个中控系统是我做的,还有挺多的python内容等等,字里行间还是缺乏实战经验。
然后问,给你一个场景。我是机票部门的嘛,问你给你所有城市之间的连线,求两个城市之间是否联通?
我说这个的话首先建图,然后利用并查集,求出所有联通图。
然后他说,是求出比如A到B的路径?
那我说建图,BFS呗。
八股这是其中一个,另外的想不起来了?
讲讲ConcurrentHashMap的内部实现?
然后说如果用concurrentHashmap,首先get,然后value+1,再put回去,会有什么问题?
我说了覆盖,然后具体的覆盖的流程也讲了。
然后说为什么会出现呢?
Emmm,我说可以同时读引起的,不过看面试官表情应该是不对🙈。
反问:
部门,只有北京吗,技术栈。
然后问他前面那个sql,看起来sql还得看看啊,哎~
Keep iOS客户端(9/1一面挂)
9/1一面
自我介绍
首先问了些项目联邦中控
传输的时候问了协议,我用的第三方中间件rabbitmq的
蓝牙的项目
然后iOSUI等一下稍微底层一点的
http中get和post,post也能代替get嘛
线程和进程的区别
线程的并发
float在计算机中怎么存的
手撕代码
给字符串,去收尾空格,中间只有一个空格,然后单词倒叙。
双指针On
反问:
我准备面试iOS还需要准备点什么呢?对view等等还是需要深入一下里面的信息传递等等。
部门用oc还是swift?
感觉还能问一下我面试iOS这个项目够了吗,还是太浅层了?
荣耀通用软件开发(9/6一面挂)
9/6一面
自我介绍
面的有点尴尬,感觉前端居多
首先redis,商品类别怎么存储的redis中,如果增删改怎么解决(一致性问题的解决),如果要加四级目录怎么办。
Nginx反向代理怎么配置的,反向代理跟正向代理的区别是什么,nginx可以配置正向代理吗?
ElasticSearch用的多吗?用了什么,如果用户没有搜索到,那么需要做一些词语的相似性,同义词,
OAuth的认证登陆过程,登陆完毕之后,如何获取微博上面的用户信息等的内容也要说完。
顺丰Java后端(9/7一面挂)
9/7一面
感觉大部分都能回答出来,良好,不知为啥挂了。
自我介绍
Mysql中如果给你一个慢查询,你考虑怎么优化?
给你十个字段,怎么考虑加索引?
如果一个字段很多不重复的,但是几个null,可以加索引吗?
MVCC讲一下
索引下推是什么?
分微服务的原则是什么?我说的是功能。然后说秒杀肯定是要单独分一个的,然后原因。
然后问我这12个是不是太细了,我说确实有点,毕竟那个时候远程调用的调试起来也有很多问题的。
Redis怎么做的持久化?
Redis的集群和哨兵机制的区别?
Redis能做队列吗?
Redis的发布订阅机制?
Redis如何批量处理key,我说了pipeline。然后问pipeline内部原理?这个不知道了,然后我说批量处理还有一个数据类型可以实现的,但是有限制,但具体忘了哪一个。
Dubbo和openfeign区别?这个没有问,我说的用了nacos和openfeign,没用dubbo🙈哈哈哈
看我简历里面的异步编排使用不同线程带来的问题(还提出了本身就是自己内部,为啥还要远程调用的时候拦截呢?)
幂等性的问题(我说了重复提交的问题,然后说redis的setnx+ex加lua脚本来占位)
前后端分别限流怎么完成。(拦截微服务,是网管转发还是自己拦截)我自己要考虑。
ElasticSearch用来干嘛呢?ElasticSearch数据类型主要用的哪些呢?
rabbitmq怎么做持久化的?
反问:
有几轮面试?
可以问一下面试官是哪个部门的吗?
想问问公司用的技术栈,kafkka还是rabbitmq等等。我说了rabbitmq可能更快一点,然后是优化后的数据结构,但是Kafka吞吐量更大,专注于核心功能。
美的(9/26一面群面)
9/26一面
emmm
三个人的群面,给我整不会了🙈。
自我介绍
首先进去,两个题目:
1 海量数据,使用到的技术以及场景。
2 智能家居的使用场景,怎样可以更好?使用哪些技术。
Emmm,首先我们就是对海量数据,的存储问题。分布式,底层技术等等。
其次,对场景比如抖音、商城、银行等等海量的数据,同时可以利用海量数据算法推荐。
然后就是智能家居的各类场景,灯、扫地机器人、智能电视等等,可以使家电之间进行联动,通过智能音箱来进行控制。但是,各个公司之间协议不同,所以其实还是有很多的困难的。然后说,可以用上机器学习技术,学习每个人每天的生活习惯,可以不手动设置任何功能,但是又处处能在恰当时刻出现需要的功能。然后后面又说了一些计算机网络、声纹识别、人脸识别等技术。
最后,说了下,智能家居中也会有很多数据,这里面会有很多的隐私保护问题,然后需要去解决。
华数(9/28一面)
9/28一面
自我介绍
Java的循环方式
ArrayList和LinkedLIst区别
创建线程的几种方式
Java的Socket用的多吗?我说直接用这个socket用的不多,成熟的框架直接帮我们封装好了。
那说说用Socket的成熟的框架。我说了Netty,介绍了一下。
Mysql的一些锁,用过哪些锁?我说行锁、页锁、表锁。然后很多指令自动加锁,比如MVCC的可重复读。
Mysql优化查询?explain,慢查询日志,分库分表等等。
Redis的基本的数据结构。
Linux部署Tomcat的指令?我说一般都用Docker部署,具体指令可能忘了,还有SpringBoot里面内置Tomcat。
那说说Linux下的一些基本的命令使用。ps -ef、top、netsta、jps、jmap、jstack等等。(查看日志是什么,我没说🙈)
对华数的了解?
你觉得你的匹配程度。
三年来的一个规划。
反问:
我报的湖州的,你们是杭州的吗?初试统一面。
湖州的话,华数有三线两区嘛?可以自己选吗?只有吴兴区的。
期望薪资?
你是湖州人是吗?
说是十月下旬才会有初试结果。
天正电气(10/11HR面)
10/11HR面
19min
自我介绍。
期望薪资,期望岗位地点。然后我以为这个岗位杭州的,所以直接说了杭州,麻了有点绷不住了,算了算了。
宣讲会有听吗?emm,可能做笔试面试什么的错过了。
成绩怎么样的?
父母对工作地点岗位的要求?
说说自己的优缺点。
说说一个人自学能力强应该具备什么特点。
说说IT这个岗位应该具备什么特点。
对公司有了解吗?诶呀,没怎么看。说没有🙈。
反问:
公司IT系统大致是做什么的?其实也细分:运维、开发、网络安全等等
然后说13号有一个空中宣讲会,可以去听听。
迪普科技(10/12笔试、10/14一面、10/14HR面)
后续不再记录
Author: Jcwang