一面 1h
自我介绍
围绕实习的经历问了几个问题:
讲讲实习参与的项目(项目架构、负责的工作等等)
在项目中有没有遇到什么性能方面的问题
说说对dubbo的理解
随便扯了扯之后,竟然直接问起了dubbo实现底层细节,超出能力范围了。。
项目中用到的dubbo是动态的吗,讲了集群扩缩容balabala,根本没听懂
说说对负载均衡的理解
场景题:1台机器负责负载均衡,10台同构机器做集群,讲讲实现负载均衡的思路
硬着头皮讲了两个,取所有机器的负载的平均值,流量分发给负载跟均值差距最大的;直接通过哈希函数映射,比如对uid最后一位求余
又接着追问,如果使用哈希函数的话,下游机器出问题时,原本分发给这台机器的流量要重新分配给剩余正常工作的机器,如何避免缓存失效的问题
直接给问傻了,尬了两分钟,又问还有什么别的办法吗?答不出来,面试官说实际上最常用的是随机法
讲讲如何实现一个哈希表,讲了用链地址法,数组+链表解决哈希冲突
追问要怎么确定给这个数组初始分配多少空间,想了半天他直接说随便取个数就行。。
又追问如果下挂的链表太长导致查询变慢怎么办,这里以为是考c++STL的哈希表实现,直接说了把链表变成红黑树,没想到面试官直接说增加桶数重新哈希即可。。
终于问回八股文,讲讲死锁的原因和解决方案
算法题:z字形打印二叉树,leetcode原题
等了十分钟,开始二面
二面 1h10min
讲讲实习的收获
为什么已经拿了实习Offer还要来投字节(最近pdd风评急速下滑,但是没敢这么说,随便说了几个理由)
然后就是面试官个人表演,给我科普了好多东西,怎么分辨岗位好坏之类的,差不多15分钟的职业生涯规划课。。
讲讲实习中有没有遇到什么技术难点或者特别的收获
好像实习都是在搬砖,就硬着头皮稍微讲了下Hystrix,熔断限流、线程池隔离之类的
追问除了上面的两个之外Hystrix还有没有别的策略,直接说不会了。。
又开始问dubbo的底层原理,提了一下zookeeper,又追问起来zookeeper..只能直接摊牌说没了解过,java是去实习才开始学的
又问回dubbo,讲讲服务消费者是怎么能够调用到服务提供者的服务的
提到序列化和反序列化,追问序列化和反序列化的编码解码过程
问到简历上有个项目,即时通讯软件,里面tcp的序列化和反序列化是怎么做的,直接说用的是qt里封装好的工具。。
面试官感觉不是很满意,建议我做项目不能停留在表面和理论知识,多了解了解底层原理
算法题1:两个链表的第一个公共节点,leetcode原题
算法题2:抽象出来负载均衡的一个算法实现,给一个pair数组(vector<pair<数值, 权重>>),如[{1, 2}, {23, 25},{40, 15}],要求每一次能随机输出数组的一项的数值,但是经过无限次输出之后,输出的数值的比例是权重的比例
如上面的例子,就要求输出无限次之后,这无限次输出里,输出1、23、40的比例是2:25:15
第二题面试官说比第一题还简单,结果直接拉了跨没写完就结束了面试
第一次遇到面试基本围绕着项目来出问题,还连续面了两个小时,感觉发挥不是很好☹,不过倒是从二面面试官那学到了不少东西,还是挺感谢的
三面 1h
二面当晚约了第二晚三面,流程很快。整个三面就是做了一道hard题然后不断优化
lc原题:求两个有序数组的交集
先提出了两次遍历+哈希的方法,优化成用两个指针来进行遍历,时间复杂度不变空间变成O(1),最后再优化成二分查找的方法
把问题规模扩大,求n个有序数组的交集,面试官提示以后才想到两两求交集,问要怎么样才能尽可能减少时间开销,最后讨论出来是从长度短的数组开始求交集
写代码+讨论大概45min
反问环节聊了10来分钟,结束
全部评论
(3) 回帖