1. 自我介绍
面试官您好,我叫XXX,来自XXX大学,是XX届的应届毕业生,我的求职意向是XXX。我熟悉数据结构、计算机网络、操作系统、熟悉 MySQL、Redis 的基本原理,也了解市场目前主流的 Web 框架。
我其中一个项目经历是基于 SpringBoot 开发的在线讨论社区,主要功能有发布和修改帖子、评论和二级评论、基于 Redis 的点赞、关注、登录和网站数据统计,还有基于 Kafka 的系统通知推送。在项目中,我使用前缀树实现敏感词的过滤,禁止在发帖和评论时出现一些不合适的敏感词。在项目完成后,我也尝试对项目进行了优化,将首页的热门帖子列表缓存到本地缓存 Caffeine 中,并使用 Jmeter 进行压力测试验证了优化的效果。在优化之前,系统的吞吐量约为每秒 12.5 个请求,优化后的吞吐量达到了每秒 180 个请求。
我的第二个项目经历也是基于 SpringBoot 开发的一个在线 Java IDE,可以远程运行客户端发来的 Java 代码,并将输出反馈给客户端,并且会对程序的执行时间进行限制。这里有几个关键的点,一个是实现编译模块,使用动态编译技术,可将客户端发来的源代码字符串直接编译为字节数组。然后是实现字节码修改器,为了避免安全隐患,我根据 Java 类文件结构修改类的字节码,将程序中的 System 类都替换成一个我自己写的 HackSystem 类。还有是实现运行模块,通过自定义类加载器实现类的热加载,然后使用反射实现 main 方法的运行。还有一个难点是解决多用户同时发送执行代码请求时的并发问题:通过 ThreadLoacl 实现线程封闭,为每个请求创建一个输出流存储结果。
平时的话我喜欢研究技术,坚持在课余时间进行总结,同时在我的博客上输出分享。我也喜欢看技术书籍,乐于与小伙伴交流技术。
2. 反问环节
- 我觉得我今天发挥的没有很好,有几个问题没答上来,您对我今后的学习有什么建议吗?
- 如果我能幸运地进入公司工作,您觉得我有哪些地方需要提高?
- 可以给我介绍一下部门内的业务和技术栈的情况吗?
- 公司对新入职的员工有什么培训项目?
- 公司内部的晋升机制是怎么样的?
- 大概多久会有后续通知?