#面经# 公司做AI相关,实习工资开的很高。 看起来福利不错。想着试试投一投。 2天后HR打来电话约了笔试和面试。笔试: LRU,典,没什么好说的。面试:1. 自我介绍,很久没做了。2. 项目和实习,项目是用的马哥的铁路。 面试官是比较了解这些东西的。直接“我记得这个项目是github上的一个开源项目吧。那你应该是做的二次开发吧。那我不问这个了。 实习问的大概是做了些什么,印象最深刻的是什么。3. 手撕: 请设计一个列表缓存容器(key -> str, value.>List),支持根据id对缓存值进行增删改查,即支持以下方法:1. get(String id)-> List:根据给走的id获取对应的完整有序列表。如果id不存在,返回nul。2. slice(String id, int fromIndex, int toIndex)-> List:根据给定的id获取对应有序列表的子列表范围为[fromIndex, toIndex).如果id不存在或索引越界,返回null,3. replace(String id, List value)-> List:使用给定的value替换id对应的有序列表,并返回被替换的原列表。如果id不存在,则新增该键值对并返回null4. insertHead(String id, List value)-> null:将value插入到id对应有序列表的头部。如果id不存在,则新增该键值对。5.removeHead(String id, int count)-> null:移除id对应有序列表的前count个元素。如果当前列表中元素数量小于count,则移除所有元素。 我很少做设计题。刚看见懵逼了。 废了15分钟左右写出来。 明显,面试官绷不住了。4. 讨论了synchronized ,hashtable,concurrenthashmap等,怎么给这个缓存容器做线程安全。 5.反问,一些start-up公司的技术问题。 很有意思。面试官不喜欢八股和面试冲刺项目,要深厚的基础和虚心的态度。 这也是为什么我被挂的原因。#面经#