瓜子二手车面经
瓜子二手车面经
一面:
面试官是个比较耐心的大姐姐类型,很多问题都不会也跟我说没关系,总共面了45分钟。我问了一下瓜子的开发岗都是在一起面得,内容都很相似,并没有针对特定的岗位问对应的内容,下面说下面试过程趴。
1、自我介绍和项目介绍,没撑过5分钟,让直接讲里面用到的技术栈,不要讲业务逻辑。用到的技术包括缓冲区、kafka、spark、hbase之类的。
2、java中的弱引用与强引用;
3、让我自己实现LRU算法,讲讲思路;
4、三次握手及详细过程,什么时候调用ackset()函数,有什么作用;timewaite发生在什么时候,为什么要wait?
5、讲一下session和cookie的区别;在服务器上多台机器多实例需要共享session中的内容该怎么办?
6、socket编程中,客户端和服务端建立连接需要用到哪些函数并解释一下作用。
7、socket连接中shutDown()和close()有什么区别。
8、多线程和多进程的区别和联系,多进程访问临界资源如何处理。
进程是资源分配的最小单位,线程是CPU调度的最小单位
8、手撕算法题,输出某二叉树中路径和等于定值n的所有路径,路径:从根节点到叶结点或从叶节点到叶节点
9、手撕代码,给出二叉树中的两个结点,找出它们的最低公共父节点。
二面:
一面面经写到一半,然后打电话来了二面,效率是真的高。二面小哥超帅的,总共面了47分钟,大多时间都在撕代码,或者在撕代码的路上。
自我介绍,然后讲3分钟项目,根据项目提了一些对应的问题,然后就是你问我答环节。
1、kafka当分区数大于消费者数量的时候如何消费,反过来呢?
2、kafka如何保证多分区数据的顺序性。采用重排序或者阻塞。
3、kakfa在消费者端调试过哪些参数,有什么意义;在使用poll拉取消息的时候有个除了有个每次拉取的数据条数设置还有哪些参数。
4、介绍一下spark流式计算框架,RDD弹性数据集以及我对其的了解。
5、hbase优化策略调过哪些参数。
6、多线程与多进程的区别(两面都问到过),在线程和进程切换时有什么区别,哪个开销大,为什么?
7、排序算法中有哪些是稳定的,哪些不稳定
8、linux命令,查看内存情况,剩余磁盘空间,网络状态
9、构造最小生成树Prim算法(不记得)
10、迪杰斯特拉算法求最短路径(还是不记得,默默心疼一波自己)
11、手撕一个算法题
有多个柱子靠在一起,柱子宽度固定为1,给定一个数组,表示每个柱子的高度,问从柱子上方泼水,柱子中最多能容纳多少水。示意图如下
首先想到的是计算每个柱子相邻的两个柱子较低的那个高度,然后相加。在小哥的提醒下发现,当如图中第7根和第9根酱紫的时候不对。
然后我又想了一会儿,提出对每个柱子遍历,找到其左右两边的最高的那个柱子,取较低的那个然后所有相加。然后小哥说复杂度太大了,有没有办法在O(n)的复杂度内把左右两边的最高柱子算出来。
然后我想了会儿,采用遍历一次,每次用tempL和tempR记录当前最大值,放进辅助数组里,然后让我用代码写一下。然后在作业本上撕了一下:
答案还在手打中,待续。。。
#瓜子二手车##面经##校招##算法工程师#