CSIG一面
一面
3月16号被WXG挂了以后,今天才被CSIG-运营开发方向捞。
1个小时的面试:5分钟部门介绍 和 我自己的自我介绍,5分钟算法题,27分钟的八股,14分钟的项目,12分钟的题外话和反问。
面试官是个年轻小哥,很亲和,即使答不出来也回引导并回复答案,体验非常的好。答完一小时内就过了,等二面现在。
算法题
Leetcode198.打家劫舍原题,5分钟秒了。因为之前的笔试AK了,面试官也就没怎么着重算法题。
八股
对着简历一个个问,汗流浃背了都。
-
Java基础
-
集合的分类,有哪些常见类
-
实现栈和队列应该用什么?
-
比
Stack
更适合实现栈的类有哪个? -
HashMap
的底层结构?链表转红黑树的阈值老是记不住。
-
HashMap
的的负载因子的作用? -
达到负载因子的阈值后,
HashMap
具体扩容的倍数?倍数答错了,应该是2,而非1.5
-
项目里你自己常用的集合类有哪些,除了
LinkedList
和HashMap
? -
使用Map是否存在这样一种缺陷,我虽然存储key到value的映射,但无法根据value找到key,这该如何解决?
-
你自己所说的“双向哈希”具体的实现?
"双向哈希"可以通过自定义一个数据结构来实现,这个数据结构同时保存key到value和value到key的映射,但这需要保证key和value都是唯一的。
这里的双向哈希是我生造的,但是查了确实有现成方案。
可以使用
Guava
库的BiMap
,它是一个双向映射的数据结构。但是需要注意,在BiMap
中key和value都必须是唯一的,因为如果一个值对应多个键,这将违反Map的基本规则。
-
-
并发编程
-
JUC下的常见的类有哪些?
-
线程池你是怎么使用的,其四个参数分别有什么含义?
不知道,刚好没背
-
对
ReentrantLock
有同等替代的类或关键字吗? -
synchronized
可标注的位置,其所持有的锁是什么? -
Java开发者为什么在有
synchronized
,还开发ReentrantLock
? -
ReentrantLock
的特点或者实现的功能有哪些? -
Java里面有没有这样一种锁针对于读写的情况,它可以做到读不锁,但是写有锁的情况呢?
这里面试官在尽力引导了,然后就答出
ReentrantReadWriteLock
,感觉面试官非常好 -
你在项目中如何使用
CountDownLatch
? -
Semaphore
和CountDownLatch
的区别?不知道
-
-
MySQL
-
索引为什么被提出来,其使用场景是什么?
-
索引的种类
-
B+树存储数据在哪里?
-
为什么选用B+树作索引的数据结构,二叉树不是更快吗?
-
你从上述内容得到的启示?
不知道
来自面试官的回答
其实其实我想谈的是就说就算你的理想情况再好,二叉树算法再好,但是你要考虑一下现实。
虽然二叉树查找速度快,但在数据库中,由于磁盘I/O操作的延迟,B+树更优。B+树是多叉树,可以减少磁盘I/O次数。另外,B+树的叶子节点形成有序链表,对范围查询高效。因此,实际应用中,B+树作为索引结构更合适。
-
了解“回表”吗?
不知道,然后面试官解释了一下什么是回表和使用场景。
-
MySQL的存储引擎
-
事务隔离级别
-
MVCC
背的不全
-
在MVCC中,是如何回滚的?
不知道
-
项目
-
你觉得你的项目中最难的实现点在哪里?
-
24小时的排行榜你该如何设计?(即跨天的)
我说多存一天的,这样保证每个人即使浏览数据的时间点不同,但也能保证能读取24小时的数据。但面试官好像不太满意。
面试官说了解一下令牌桶和漏桶,但我虽然了解了,但仅仅知道他可以用作限流,没想到可以用在这里。
-
雪花算法从哪里学的,其设计理念是什么?
-
生活中有什么也体现了雪花算法这种“分段”的?
IP地址、区域地址
面试官说,还有身份证号、学生证号
-
分布式架构
-
在多台服务器上,如何保证请求只访问一个服务器?
-
Liquibase是什么软件?
我之前只在SpringBoot框架下用过,没装过软件,就尬住了
-
ThreadLocal用于解决什么的,你是在拦截器中使用的?
-
在拦截器结束时要对TheadLocal调用什么方法吗?
-
TheadLocal中哪里的设计导致出现内存泄漏,其底层数据结构是什么?
不知道
-
什么是强引用啊,弱引用,结合这部分回答一下?
不知道,面试官这里还是在引导我,但是确实没背
题外话
- 你平时如何对编程时如何学习和实践的,除了算法以外?
- 假如按照60、80、100打分,你对大学课程的投入度的打分是怎么样的?
- 除了计算机,还有什么兴趣爱好吗?
反问
-
我们这个部门开发的系统,是给内部员工使用的一个系统?
“运营开发”是腾讯云的云采购供应管理的岗位,也是一种后台开发,专注于构建公司内部同事使用的运营系统。比如运营工作或销售同事录入销售数据、采购数据等。
-
我还有哪些地方需要改进的?
- 加强知识的系统性和深度 : 不仅要关注于解决具体问题,还要形成知识体系,理解知识点之间的联系,以应对更广泛的挑战。
- 提升工程实践能力,特别是在并发编程和MySQL方面。
- 算法与数据结构的应用:虽然打过ACM,但需要将算法与现实生活联系起来,通过对现实生活中的场景进行映射和理解,加深对计算机问题的理解,从而更好地应用于实际业务场景。