南京凯易讯实习-电话面试

称不上是面试,只能算是技术了解

电话面试总结

问题 1: 你是否有做其他项目?

回答: 过去半年主要集中在寻找实习上,导致项目进度有所延迟。此前有接触一些其他项目,但最近两三个月一直在调整,未能深入推进。

问题 2: 你是从零开始做的项目还是在已有基础上做了改进?

回答: 项目最初是基于LSM-Tree的论文,在已有的一些成熟应用(如Rocket数据库)基础上进行学习和改进,最终实现了一个迷你版,涵盖了主要功能。

问题 3: 为什么使用双内存表(活动表+不可变表)的设计,而不是单个内存表?

回答: 采用双内存表设计是为了提升性能。当活动内存表满时,避免暂停所有读写操作,使用异步线程将其持久化到磁盘,从而提高效率。

问题 4: 双内存表切换时如何保证原子性?如果发生写入请求怎么办?

回答: 使用WAL日志机制,所有请求先写入日志。如果活动内存表正在转换为不可变表,客户端请求会先写入日志,等待持久化完成后再写入活动内存表。

问题 5: 你在无锁跳表的实现中是否考虑过ABA问题?

回答: ABA问题是高并发场景下的一个常见问题。虽然在当前项目中并未深入考虑,主要集中在保证原子性,但应该在线下做进一步了解并解决该问题。

问题 6: 跳表的并发控制是如何实现的?

回答: 通过使用STL的原子操作来确保跳表的并发一致性,但对底层原子操作(如CAS)并未深入了解,计划在后续进一步学习。

问题 7: 跳表查询效率如何?在数据量大时,查询效率是否会下降?

回答: 跳表的查询时间复杂度是O(nlog n)。当数据量非常大时,查询效率可能受到影响,但在设计时没有考虑动态调整跳表层数的功能。

问题 8: 如果要在运行时动态调整跳表的层数,如何实现?

回答: 目前实现中未支持动态调整跳表层数,但可以通过运行时多态,维护一个类来跟踪当前的数据量,进而根据需求调整跳表的层数。

问题 9: 项目是否涉及底层技术的学习?

回答: 面试者对底层技术非常感兴趣,尤其是对CAS操作等并发控制技术有较高的学习热情,但由于时间限制,未能深入探讨。

问题 10: 如果项目涉及Go语言,你是否愿意学习?

回答: 面试者表示愿意学习Go语言,尽管目前的掌握仅限于基础,但对Go在分布式系统和云原生应用中的广泛应用非常感兴趣。

下面是反问环节

问题 11: 该项目是否涉及光通信领域?

回答: 项目主要集中在网络管理系统,用于模拟和管理大量设备,涉及netwarf协议的使用,重点在于设备行为模拟,而不是光通信的底层原理。

问题 12: 模拟大量设备时如何保证性能?

回答: 模拟大量设备时,系统需要保证足够好的性能,使用Netwar协议模拟设备的基本行为和流量,通过模拟多个设备的连接和同步等操作来优化性能。

问题 13: 面试者对项目的认知有何变化?

回答: 面试者对项目的认知已经比较清晰,理解了模拟大量设备和保障性能的重要性,并有兴趣进一步参与。

问题 14: 面试者是否有其他问题?

回答: 面试者询问了项目的具体应用场景,确认是否涉及分布式系统。面试官解释了项目是单机部署的,但可以通过水平扩展来提升性能。

问题 15: 面试者是否有兴趣继续进行面试?

回答: 面试者表示对继续面试感兴趣,并准备参加下一轮的面试。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务