数字马力 测开 测试开发 长沙 二面

10.23号二面,流程大概30多分钟。全程疯狂拷打我项目

1. 自我介绍。
2. 介绍一下项目,说说为什么要写这个项目,采用了哪些技术架构?
3. 说说项目的难点,选择一个介绍一下这个难点的基本流程,为什么要这么设计?
4. 你说你用到了线程池,为什么使用线程池?与不使用相比有多少优化?
5. 说说多线程下的线程安全问题?
6. 你这个模块的性能瓶颈在哪里?
7. 针对于性能瓶颈,你做出了哪些优化?
8. 你觉得还能有什么优化的地方?
9. 你说你使用到了分库分表,自定义的分片算法,为什么要自定义?使用默认的会有什么问题?
10. char和varchar的区别?char(10)表示什么意思?一个字符等于一个字节吗?
11. 系统的具体性能你有进行测试过吗?重要模块分别有多少的吞吐量?响应时间大概是多少?
12. 对于XX功能,你怎么进行设计测试用例?
13. 说说SpringBoot中的常用注解?
14. 你提到了AOP相关的注解,说说AOP在你项目中是怎么使用的?除了日志记录,AOP还有其他的什么作用?
15. 你觉得你有什么优点和缺点?
16. 反问?

#数字马力长沙# #数字马力# #数字马力测开#
全部评论
校友,咋样,开奖了吗😋
点赞 回复 分享
发布于 2024-11-11 21:20 黑龙江
请问佬现在收到意向了吗
点赞 回复 分享
发布于 2024-11-08 02:17 陕西
1. 为什么使用线程池 - 资源管理:线程的创建和销毁是有成本的。每次创建一个新线程,都需要分配系统资源,如内存空间用于线程栈等。当线程结束后,这些资源需要回收。使用线程池可以预先创建一定数量的线程,这些线程可以被重复利用,避免了频繁创建和销毁线程带来的资源开销。 - 提高响应速度:对于频繁需要多线程处理的任务,如果不使用线程池,每次都要创建新线程,这会有一定的延迟。而线程池中的线程已经创建好,当有任务到来时,可以立即执行任务,从而提高系统的响应速度。 - 控制并发数量:线程池可以限制同时执行的线程数量,防止因为创建过多线程导致系统资源耗尽。例如,如果有大量并发任务,如果不加以控制,可能会创建大量线程,使系统内存占用过高,甚至出现“Out of Memory”错误。通过线程池可以合理设置最大线程数,保证系统的稳定性。 2. 与不使用相比的优化 - 性能提升:在高并发场景下,不使用线程池频繁创建和销毁线程会消耗大量时间和资源。假设创建一个线程需要10毫秒,销毁一个线程需要5毫秒,对于100个任务,每个任务都创建和销毁线程,总共花费在创建和销毁线程上的时间为       毫秒。而使用线程池,假设预先创建了10个线程,这些线程可以复用,这部分时间开销就可以节省下来,任务可以更快地得到处理。 - 资源利用优化:不使用线程池可能会因为大量线程同时运行而导致系统资源紧张。例如,每个线程可能需要1MB的栈空间,大量创建线程可能会耗尽内存。线程池通过合理配置线程数量,能够更好地利用系统资源,避免资源浪费。在一个应用中,如果不使用线程池,可能会因为线程过多导致系统卡顿,而使用线程池可以让系统在合理的资源消耗下高效运行。
点赞 回复 分享
发布于 2024-10-24 10:56 广东
13. Spring Boot 中的常用注解: -  @SpringBootApplication :这是一个组合注解,用于标记一个主 Spring Boot 应用类。它包含了 @Configuration (表明这是一个配置类)、 @EnableAutoConfiguration (开启自动配置)和 @ComponentScan (组件扫描)。 -  @RestController :用于标注一个控制器类,该类中的方法默认返回的是 JSON 格式的数据响应。 -  @RequestMapping :用于映射请求的 URL 到特定的处理方法。可以在类级别和方法级别使用。 -  @GetMapping 、 @PostMapping 、 @PutMapping 、 @DeleteMapping :分别对应 HTTP 的 GET、POST、PUT、DELETE 请求方法的映射。 -  @Autowired :自动装配依赖,将一个 Bean 注入到另一个 Bean 中。 -  @Service :标注一个服务层的类,表示该类是一个业务逻辑组件。 -  @Repository :标注一个数据访问层的类,表示该类是一个数据存储相关的组件,如数据库访问层。 -  @Component :通用的组件标注,可以用于标注任何 Spring 组件。 -  @Value :用于将外部配置的值注入到 Bean 中。 -  @ConfigurationProperties :将一组配置属性绑定到一个 Bean 上。 - AOP 在项目中的使用: - 在项目中,可以使用 AOP 实现日志记录。例如,通过定义一个切面,使用 @Pointcut 指定要拦截的方法,然后在 @Before 、 @AfterReturning 等通知中实现日志记录逻辑。比如在方法执行前记录请求参数,方法执行后记录响应结果和执行时间等。 - AOP 的其他作用: - 事务管理:可以使用 AOP 在方法级别上管理事务。通过定义一个事务切面,在需要事务的方法上添加特定的注解(如 @Transactional ),AOP 会在方法执行前开启事务,在方法正常执行完成后提交事务,若方法执行过程中出现异常则回滚事务。 - 安全控制:可以实现权限验证、身份认证等安全功能。例如,在方法执行前检查用户是否具有执行该方法的权限。 - 性能监控:可以记录方法的执行时间,统计系统的性能指标,以便进行性能优化。 - 优点: - 快速学习能力:能够迅速掌握新的技术和知识,适应不同的项目需求。例如,在接触新的编程语言或框架时,通过阅读文档、参考示例代码和实践操作,能在较短时间内理解其核心概念和使用方法,并应用到实际项目中。 - 良好的问题解决能力:在面对复杂的问题时,能够冷静分析,通过查阅资料、尝试不同的解决方案,最终找到有效的解决办法。比如在调试代码时,会逐步排查问题,从错误信息、日志记录等方面入手,定位问题所在并进行修复。 - 团队合作精神:善于与团队成员沟通协作,能够倾听他人的意见和建议,共同完成项目任务。在团队中,积极分享自己的知识和经验,帮助其他成员解决问题,同时也从他人那里学习新的技能和思路。 - 缺点: - 有时候过于追求完美:在某些情况下,可能会花费过多的时间在细节上,导致项目进度受到一定影响。例如,在编写代码时,可能会不断优化代码结构和性能,而忽略了时间成本。 - 压力下可能会焦虑:在面临高强度的工作压力和紧迫的项目期限时,可能会感到焦虑。这种焦虑可能会影响工作效率和决策能力。不过,正在努力通过学习放松技巧和时间管理方法来改善这一问题。
点赞 回复 分享
发布于 2024-10-24 10:06 广东
是校招吗,怎么问这么难啊
点赞 回复 分享
发布于 2024-10-23 21:46 河南

相关推荐

面试官人很好,态度和蔼可亲,没答出来时也会引导你去思考。由于是晚上面的,导致我白天一天都有点紧张,面的时候状态也不是很好,正常可能面试官提问完应该思考几秒再答,而我就像抢答一样一口气把所有会的都说出来,这样就导致逻辑比较混乱,东一句西一句的。首先是自我介绍,先把会的技术大致讲一下,由于我八股背的多所以着重讲了一下,Java,go,jvm,MySQL,Redis,计网,操作系统这些,然后一小部分闲聊,然后先问了一下项目,面试官问我这个项目是否落实之类的,直接坦言说是写的练手的,包括之前也写过IM通讯,外卖之类的。然后面试官就把提问的重点放在了八股上。先问了Java:类加载器(答:3种+自定义类加载器、tomcat、原因+双亲委派+好处)JVM参数(答:xmx,xms,newsize这些,问我是如何设定的,我回答是把内存分一半给堆,再把堆分一半给新生代,这方面确实不太了解)然后问了一下并发相关的:线程池(答:线程池的7个参数(忘了线程工厂和阻塞时间了),3个重要参数,还有线程如何启用,为什么要设计最大线程数之类的,提到Java栈默认分配1MB运行时不可以更改)AQS(答:先讲clh是自旋锁+list,然后是AQS在这个基础上做的两个优化,然后举了一下reentrantlock根据state如何获取资源)CAS(答:使用三个字段,aba问题,然后将通常搭配自旋锁实现,面试官问通常会自旋多少次,这个不太了解,答的100,然后问100次大概多少秒,回答微秒级,然后面试官讲了一下怎么做资源可能没用完,意识到可能还需要进行阻塞操作)然后考虑一下Linux命令(top,ps,如何使用管道符过滤线程和使用Linux启动线程没答出来)然后问Redis:持久化机制(答:三种aof,rdb,混合,aof的三个参数刷盘策略,rdb以快照保存,使用bgsave会使用子线程来保存不会阻塞,而aof虽然会阻塞但是只在写完数据后追加一条命令,不会太影响,然后是他俩的优缺点,还有混合是怎么保存数据的)集群模式(答:三种,主从复制到缺点再到哨兵机制,正常使用三个哨兵互相监督,主节点挂了投票选主哨兵然后选主节点,然后额外讲一下脑裂的问题,主节点进行数据更新然后把命令写入aof来同步从节点,最后cluster集群,如何实现,使用16383个哈希槽(艹答成16384了),先根据哈希码取余,再根据节点数取余决定放在哪个节点上,然后问了一下我会怎么选集群模式,首先是cluster的问题,会让管道操作之类的失效,然后哨兵会导致整个集群结构变得复杂,使用小项目可能会考虑哨兵,大的考虑cluster,然后考了一下cluster如果一个节点挂了怎么办,根据节点数重新取余然后数据转移,面试官说这么转移比较慢,有没有别的办法,我隐约记得使用一个类似环形数组的方式,想不起来了)然后考了一下MySQL的b+树(这方面的知识点太多了,导致我什么都想讲逻辑就比较乱,讲了一下聚簇索引,树的叶子节点对应着一张页16KB,MySQL有一个区的概念,把这些页放在同一个区中,这样叶子节点的双向链表遍历时速度更快,然后b+树的扇出比较大(非常二,说成扇度之类的,面试官以为说的是扇区)这样层数就比较小,一行1kb数据的话3层可以放心2000w数据)其他的暂时想不起来了算法是lru,面试官问要不要提示,我说写个,然后写了10分钟左右,说大概写好了,但是面试官指出了2个小错误,第一个马上就改回来了,第二个一直没看出来(大脑这时候已经停止工作了)反问:问学习建议,说根据实际的项目进行深入,考虑应该怎么做,还问了一下组里面是做Java的吗?面试官说他是做go的,组里什么语言都有,语言影响不大,连忙补充了一句我对go的底层有深入源码的学习)结束。总体感觉答得不太好,没有太体现出深度,细节也不够全面。
下一个更好呗:佬,我投完云智一直没消息,多久约的一面啊
查看14道真题和解析
点赞 评论 收藏
分享
SHC2:关键问题是你这三段实习是三个不同的岗位…你这样子秋招就是只有一段实习的本科生..
点赞 评论 收藏
分享
评论
2
12
分享

创作者周榜

更多
牛客网
牛客企业服务