这个是自己投的,自己投过之后又有几个pdd的hr和猎头在boss和脉脉上联系
然后说我自己已经投了一个了,这个锁jd了,不能投别的了
然后才发现虽然招的是大模型工程,但是实际是平台治理的岗位
整体做的大概是隐私合规相关的事情,之前也和隐私合规的部门有过对接,多少有点了解
一个是代码里的,一个是传输链路中的,再一个就是落表时的
一上来先聊了聊项目,整体讲了一下两个项目,面试官问的问题有限,
因为他不是做这个方向的,他也坦言能问的问题不是很多
然后是写一个题,现出的,让用个数据结构实现有序的map,语言不限
实现put(key,value)、getByIndex、getByKey、deleteByKey、deleteByIndex方法
然后get方法越快越好,我一开始以为最坏复杂度越快越好
给口胡了一个分块,又给口胡了一个线段树,但是要求值域在一定范围内
面试官说,可以用额外的空间,我还是没get到对应意思,说是不是让用redis的跳表,
它说,get最快能多少,能O(1),什么数据结构是O(1)的,
我终于明白意思了,用数组或者vector,但是我提到说这样增删的复杂度就是O(n)的了
他说没事只要查的快就行,于是写了一下vector+map乱搞,
map用于解决getByKey,vector用于解决getByIndex,也就是按下标rank来
写完被问为啥跳,如实和他说了
然后问了下用哪些中间件,说了mysql和redis,于是就问了下八股题,
一开始问了我们用啥隔离级别,我说用的默认级别,可重复读,然后就针对可重复读问了下
大意是
(1)insert a=1 and b=1; // 插入这样一条记录
(2)update a=2 where b<10; // 把满足条件的a都改成2w
一开始问这个update语句会不会更新到insert这句,我说不会
因为mvcc多版本并发控制的版本是这个事务开始前的版本,开始之前没有这条记录
然后问我t1时刻commit(2),t2时刻commit(1),
t3时刻update语句执行完成时,会不会存在t2时刻insert语句已经执行完成的情况,为什么
我一开始说可能存在,但是这样可能会引发幻读,事后发现多了这样一条数据
他示意让我再想想,然后我感觉出来是回答错了,讲了讲两阶段提交的东西,面试官不置可否
下来查了一下,是mysql针对这种情况会加间隙锁,
导致insert这条数据插不进去,所以t2事务根本不会commit成功,
这块也不是不知道这个知识点,但就是感觉自己做题变通能力还挺差的
后面问能不能接受pdd的作息11-11-6,强度挺高的,固定的,
我说我现在11-10+-5的作息其实差不多,之前也有0点1点的时候,都理解
最后问我有什么问题,问了问他们具体的
自己作死说,如果要因为岗位不匹配挂我的话希望能给个调剂,
但是自己是愿意转这个方向+转java的,
不知道面试官听进去多少,也很担心一句话给自己凉凉了