猿辅导暑期实习面经

一面(4.10)
1.Object类中有哪些方法
(太基础了,一下搞懵了,想了半天只想出来clone和wait notify,后来才发现忘了最基本toString,equals,hashcode那些)
2.说一下异常,常见的运行时异常
(基础部分真的好久没看了,凭借着模糊的记忆说了一下,也不确定回答的好不好)
3.进程、线程和协程
(答:线程是系统调度的,而协程可以在程序中进行调度)
4.协程说的再具体一点,怎么在程序中调度协程
(压根没用过协程,懵了)
5.什么是死锁
(说了半天,面试官直接问形成死锁有什么条件吗,我说了那四个条件,他说你既然知道为啥不早说)
6.循环依赖的解决方法
7.Spring中循环注入问题的解决方法
8.你商城项目的商品域的领域模型是如何设计的
(我:不好意思,什么是领域模型?😲
面试官:你就说商品域是怎么设计的
我:不好意思,什么是商品的“域”啊? 😲
面试官:就是你商品的类是怎么设计的,有哪些和商品有关的类)
9.知道SKU吗
(答:听说过,项目中没考虑这个问题)
算法:设计LRUCache(写一半说大概看出我的思路了,就让我停了)
提问环节我让他对我在学习上提一些建议,他说:建议你不要把主要精力花在项目上,其实你们在校生一般是搞不懂商城这么复杂的项目的,我们也不会期望你做出来这种项目,而是更关注你的基础,数据结构这些,还是多花点时间在这些东西上面吧

一面完整个人心态都崩了,倒不是因为感觉面试肯定挂了,而是明明问的都是很简单很基础的东西,自己却答的一塌糊涂,项目也是被问的哑口无言,感觉这种状态后面其他厂的面试也都要没戏了,后来没想到一面还是过了,感谢面试官的仁慈

二面(4.17)
参加过的最特别的面试
一上来问我哪些是我擅长的但上次面试没问到的,我说HashMap,他说数据结构是吧,既然说到这个了,那先来做一道很简单的题吧
1.合并两个有序数组,但是写出来只给6分,要从工程角度考虑,假如一个不懂技术的PM让你做这个事,你要如何去考虑去和PM沟通
写出来之后讨论了一下没考虑哪些问题,在实际项目中怎么去沟通
2.刚刚做的合并两个有序数组其实是归并排序的一个步骤,那么归并排序的时间复杂度是多少?如何推导出来的,要让一个什么都不懂的人能听懂
3.快速排序的时间复杂度,如何对快排进行优化?
4.快速排序和归并排序哪个更好?
(我说快排,他问原因,我耍了个机灵说因为一般语言里提供的的sort用的都是快排🤣
后来我说因为归并空间复杂度比快排高,他说归并也可以in-place的
我说那其他的我就真想不出来了,按理说归并时间复杂度还比快排稳定
他说对啊,好奇怪啊是不是,为啥归并稳定大家还都用快排?后来他说这个对我来说可能确实太难了,叫我去google一下)
5.MySQL场景题,给一个建好索引的表和两个SQL语句,判断索引建的是够合理,怎么对索引进行修改

这个面试官真的很好,出的题都不是单纯的八股文,而且会不断的去引导你

三面(4.25)
上来先自我介绍,然后聊了点实验室是做啥的
1.最近在学什么新的有意思的新东西吗?讲一讲(答:Redis的分布式锁)
2.Redis的持久化方式,各自的优缺点,适用的情况
3.Redis持久化时,数据从内存到磁盘的过程中若对这些数据进行了修改,而导致了数据不一致的情况要怎么办
4.有一堆数据,想取得其中从小到大第99%位的数据,要怎么做?
答:快排查找
问:时间复杂度是多少
答:O(n)
问:这样确实可以,但假如现在我不停有新数据加入,想要实时获取第99%位的数据,要怎么做?每次都快排查找一遍吗?
答:维护一个小顶堆,存储最大的1%的那些数据,若加入新数据,就和堆顶元素比较,若小于堆顶元素就丢掉,否则就加入最小堆
问:直接丢掉小于堆顶元素的数据会出问题
答:那就再用一个大顶堆存储那99%的数据
问:嗯,好像确实可以,那你用代码把你刚刚说的实现一下吧
实现完之后又问了一下这样时间复杂度是多少
反问环节问了一下面试表现怎么样,说还不错,希望不是场面话吧,写一下面经攒人品,许愿能拿到offer吧,听说牛客许愿特别灵
#实习##面经#
全部评论
楼主收到offer了吗
点赞 回复 分享
发布于 2021-06-04 11:46
楼主你好,请问你是什么岗位?开发的话,是Java方向还是C++方向?或者其他语言方向~
点赞 回复 分享
发布于 2021-04-25 20:54
楼主是Java开发么
点赞 回复 分享
发布于 2021-04-25 20:14

相关推荐

点赞 评论 收藏
分享
面试官人很好,态度和蔼可亲,没答出来时也会引导你去思考。由于是晚上面的,导致我白天一天都有点紧张,面的时候状态也不是很好,正常可能面试官提问完应该思考几秒再答,而我就像抢答一样一口气把所有会的都说出来,这样就导致逻辑比较混乱,东一句西一句的。首先是自我介绍,先把会的技术大致讲一下,由于我八股背的多所以着重讲了一下,Java,go,jvm,MySQL,Redis,计网,操作系统这些,然后一小部分闲聊,然后先问了一下项目,面试官问我这个项目是否落实之类的,直接坦言说是写的练手的,包括之前也写过IM通讯,外卖之类的。然后面试官就把提问的重点放在了八股上。先问了Java:类加载器(答:3种+自定义类加载器、tomcat、原因+双亲委派+好处)JVM参数(答:xmx,xms,newsize这些,问我是如何设定的,我回答是把内存分一半给堆,再把堆分一半给新生代,这方面确实不太了解)然后问了一下并发相关的:线程池(答:线程池的7个参数(忘了线程工厂和阻塞时间了),3个重要参数,还有线程如何启用,为什么要设计最大线程数之类的,提到Java栈默认分配1MB运行时不可以更改)AQS(答:先讲clh是自旋锁+list,然后是AQS在这个基础上做的两个优化,然后举了一下reentrantlock根据state如何获取资源)CAS(答:使用三个字段,aba问题,然后将通常搭配自旋锁实现,面试官问通常会自旋多少次,这个不太了解,答的100,然后问100次大概多少秒,回答微秒级,然后面试官讲了一下怎么做资源可能没用完,意识到可能还需要进行阻塞操作)然后考虑一下Linux命令(top,ps,如何使用管道符过滤线程和使用Linux启动线程没答出来)然后问Redis:持久化机制(答:三种aof,rdb,混合,aof的三个参数刷盘策略,rdb以快照保存,使用bgsave会使用子线程来保存不会阻塞,而aof虽然会阻塞但是只在写完数据后追加一条命令,不会太影响,然后是他俩的优缺点,还有混合是怎么保存数据的)集群模式(答:三种,主从复制到缺点再到哨兵机制,正常使用三个哨兵互相监督,主节点挂了投票选主哨兵然后选主节点,然后额外讲一下脑裂的问题,主节点进行数据更新然后把命令写入aof来同步从节点,最后cluster集群,如何实现,使用16383个哈希槽(艹答成16384了),先根据哈希码取余,再根据节点数取余决定放在哪个节点上,然后问了一下我会怎么选集群模式,首先是cluster的问题,会让管道操作之类的失效,然后哨兵会导致整个集群结构变得复杂,使用小项目可能会考虑哨兵,大的考虑cluster,然后考了一下cluster如果一个节点挂了怎么办,根据节点数重新取余然后数据转移,面试官说这么转移比较慢,有没有别的办法,我隐约记得使用一个类似环形数组的方式,想不起来了)然后考了一下MySQL的b+树(这方面的知识点太多了,导致我什么都想讲逻辑就比较乱,讲了一下聚簇索引,树的叶子节点对应着一张页16KB,MySQL有一个区的概念,把这些页放在同一个区中,这样叶子节点的双向链表遍历时速度更快,然后b+树的扇出比较大(非常二,说成扇度之类的,面试官以为说的是扇区)这样层数就比较小,一行1kb数据的话3层可以放心2000w数据)其他的暂时想不起来了算法是lru,面试官问要不要提示,我说写个,然后写了10分钟左右,说大概写好了,但是面试官指出了2个小错误,第一个马上就改回来了,第二个一直没看出来(大脑这时候已经停止工作了)反问:问学习建议,说根据实际的项目进行深入,考虑应该怎么做,还问了一下组里面是做Java的吗?面试官说他是做go的,组里什么语言都有,语言影响不大,连忙补充了一句我对go的底层有深入源码的学习)结束。总体感觉答得不太好,没有太体现出深度,细节也不够全面。
下一个更好呗:佬,我投完云智一直没消息,多久约的一面啊
查看14道真题和解析
点赞 评论 收藏
分享
评论
4
20
分享

创作者周榜

更多
牛客网
牛客企业服务