2023/1/18 中科软 Boss视频一面

年前投了一周了,想着没啥面试机会。第一面经练手还得是外包

步入正题:

1.spring事务的传播性,spring事务的注解讲一讲(忘得一干二净)

所谓的事务传播性是指:当多个含有事务方法嵌套调用时,这些方法处理事务的规则

spring中共有7个事务传播属性,自行查阅学习资料把。

@Transactional(属性,失效场景)

2.Synchroinzed 与lock 锁的区别

  • lock是一个接口,而synchronized是java的一个关键字。
  • synchronized在发生异常时会自动释放占有的锁,因此不会出现死锁;而lock发生异常时,不会主动释放占有的锁,必须手动来释放锁,可能引起死锁的发生。

3.索引有那些,什么字段要创建索引(回答了部分)

从功能逻辑上说,索引主要有4类,分别是普通索引、唯一索引、主键索引、全文索引。

按照物理实现方式,索引可以分为2种:聚簇索引和非聚簇索引。

按照作用字段个数进行划分,分成单列索引和联合索引。

  • 表的主键,外键
  • 针对数据量大,且查询比较频繁的表建立索引
  • 针对常作为查询条件(where),排序(order by),分组(group by)操作的字段建立索引
  • 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高
  • 如果是字符串类型的字段,字段的长度较长,可以针对字符串的特点,建立前缀索引
  • 尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以索引覆盖,避免回表,提高查询效率
  • 要控制索引的数量,索引过多,维护索引结构的代价很大,会影响增删改的效率
  • 经常与其他表进行连表查询,在连接字段上可以建立索引
  • 索引应该建立在小字段上,对于大的文本字段不要建立索引
  • 如果索引列不能存储null值,则在建表时加入not null约束。当优化器知道每列是否包含null值时,它可以更好地确定哪个索 引最有效地用于查询

4.有哪些集合

(网上找个图)

5.线程池的工作原理以及核心参数,拒绝策略

线程池就相当于一个工厂,核心线程相当于里面的长期员工,最大线程为长期员工+临时工.工作队列就相当于所有的任务.当长期员工无法处理太多的任务时,计算机就会帮我找一些临时工,临时工最多数量为最大线程数-核心线程数,当任务慢慢被处理的差不多的时候,工厂就会将临时工遣散。而长期员工不受影响。当任务长期员工与临时工都做不完,或者任务数量超出了任务队列的长度时,就是每天所有人只能做200个任务,任务却有300个的时候。工厂就会拒绝一部分订单,即线城池的拒绝策略。(参考贴子)

  • corePoolSize:核心线程数
  • maximumPoolSize 最大线程数
  • keepAliveTime 空闲线程存活时间
  • TimeUnit 单位:时间单位
  • workQueue: 工作队列
  • threadFactory 线程工厂
  • hander:处理程序.拒绝策略 
  • jdk默认提供了四种拒绝策略

    • AbortPolicy - 抛出异常,中止任务。抛出拒绝执行 RejectedExecutionException 异常信息。线程池默认的拒绝策略。必须处理好抛出的异常,否则会打断当前的执行流程,影响后续的任务执行
    • CallerRunsPolicy - 使用调用线程执行任务。当触发拒绝策略,只要线程池没有关闭的话,则使用调用线程直接运行任务。一般并发比较小,性能要求不高,不允许失败。但是,由于调用者自己运行任务,如果任务提交速度过快,可能导致程序阻塞,性能效率上必然的损失较大
    • DiscardPolicy - 直接丢弃,其他啥都没有
    • DiscardOldestPolicy - 丢弃队列最老任务,添加新任务。当触发拒绝策略,只要线程池没有关闭的话,丢弃阻塞队列 workQueue 中最老的一个任务,并将新任务加入

    6.spring常用的那些注解,跟你们公司的框架的注解有那些区别?

    巴拉巴拉说了几个,有什么区别(这可真难到我了,简单无脑嘎嘎香?)

    7.问了下项目的具体实现,负责那些模块

    仍然是巴拉巴拉说了一堆。

    还有一些问题记不得了。。。

    最后 老样子反问环节,8讲了。

#面经刺客#
全部评论
竟然都问那种🔒了??
1 回复 分享
发布于 2023-02-13 21:49 河北
咋样老哥,有后续没?
1 回复 分享
发布于 2023-02-07 12:48 山东
老哥几年经验啊
点赞 回复 分享
发布于 2023-02-26 18:12 上海

相关推荐

King987:待优化的地方还是挺多的,可以参考一下我的作品优化一下,优化不好的话也可以找我
点赞 评论 收藏
分享
当年还在美团那个倒霉的 Peppr 团队工作时,我一直有个疑问:这群人每天到底在自嗨什么。每次开会一堆人围着一堆“看起来很高级”的文档转,模板统一、名词复杂、页数感人,每一页都在暗示一件事:“你不懂,是因为你不专业。”但现实是——代码照样写在 💩 山上,该出问题还是会出问题,这真的很逗,系统一出问题,文档的唯一作用就是证明:“我们当初确实认真写过文档。”所以本质区别到底是什么?是代码质量提升了,还是大家在精神层面完成了一次“工程师 cosplay”?有句话说得好潮水退去才知道谁在裸泳。还记得当时的马哥、明哥(图 1 左)最爱反复强调一句话:“所有场景一定要想到。”、“这个场景为什么没考虑到?”不过他们这些话我是真的听进去了。不然我也不会在一年多前就说:这个项目活不过两年。顺带一提,那段时间还有个固定节目。每次下楼,总能听见我明哥在吐槽不同的人。我从他身后绕过去,经常能听到他一边抽烟一边说:“xx 这小子太坑了,回头我一定要跟马哥说说。”于是深谙人情世故但真不会抽烟的我也会从口袋掏出一支低尼古丁含量的烟给自己点上,假意自己什么都没听到什么都不知道,只是来抽烟的。后来我才明白,这可能也是团队文化的一部分:问题永远在别人身上,而我们,永远在复盘里😂。
秋招白月光
点赞 评论 收藏
分享
评论
10
40
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务