9. 安软信息技术研发外包面试复盘

结果:

挂了

时间

2023.3.9

心得

一直问我项目线上情况,和消息队列,感觉有点看不上我做过的项目

还问了死锁相关问题----八股没背,又一次心痛自己

问题

做过的比较久的项目是什么?

费用管理系统(需要针对这个项目包装一番,什么高并发大数据jvm调优都塞进去)

说一下你负责的一些东西

首先说一下背景,这个项目主要是围绕申请单和报销单去做了一系列开发,包括预提,冲销,预时对比,预算控制等会计人员的操作。

我主要负责的模块有智能审核模块和保险索赔模块。智能审核模块是基于页面维护的规则信息,对申请单和报销单中的对应字段进行审核校验,这个模块的核心方法是比较方法,是基于不同业务场景和不同比较类型去做比较,比如金额比较、日期比较、字符串比较等。基于此我采用了设计模式中的策略模式进行实现,以及简单工厂模式对它的上下文类进行封装。另外还用到了分布式锁去保证在多机器节点下对共享资源的排他性。

保险索赔模块是相对独立的一个小模块,是基于四种角色和五种单据类型进行的一系列审批流操作。

这个系统的并发用户能达到多少?

数据库连接线程池设置的200,盲猜200

说一下怎么用分布式锁做业务的?

回答分布式锁原理和用法

其他实现分布式锁的方式是什么?

数据库的字段形式,Zookeeper,然后讲一下各自实现原理

什么是死锁?

从三个方面回答

什么是死锁

死锁是一组互相竞争资源的线程因互相等待导致“永久”阻塞的现象

发生死锁的原因

  1. 互斥条件,共享资源 X 和 Y 只能被一个线程占用
  2. 占有且等待,线程 T1 已经取得共享资源 X 在等待共享资源 Y 的时候 不释放共享资源 X
  3. 不可抢占,其他线程不能强行抢占 线程 T1 占有的资源
  4. 循环等待 , 线程 T1 等待线程 T2 占有的资源 , 线程 T2 等待线程 T1 占有的资源

如何避免死锁

打破其中任意一个条件,即可避免死锁问题。

互斥条件无法被破坏;

针对 占用且等待, 可以一次性申请所有的资源 ;

针对 不可抢占, 占用部分资源的线程, 进一步申请其他资源时, 如果申请不到, 可以主动释放它占有的资源

针对 循环等待, 可以靠按序申请资源来进行预防,是指资源是有线性顺序的 申请的时候可以先申请资源序号小的,再申请资源序号大的,这样线性化后自然就不存在循环等待了

发生了死锁怎么解决?

排查:通过sql进行排查

show engine innodb status;

然后定位到相关代码并修改。

控制并发量的方案?

加锁,或者乐观锁,控制线程池大小,使用消息队列

有没有在公司项目搭建过redis?

无(这里要说有,flag:搭建主从redis集群)

redis淘汰策略有哪些?默认是什么?

有很多,先不记下来

默认:

volatile-lru:基于LRU算法淘汰最近最少被使用的那些key

jvm调优实操过吗?用的什么工具?

部署服务是你部署的吗?

不是....

怎么查询慢sql?

可以通过一些工具

sql怎么调优?

数据库分库分表有什么方案?

垂直,水平

授权码模式的大概原理是什么?

MQ怎么实现重试机制?

固定重试或者死信队列-----日后研究

RocketMQ的确认机制了解吗?

日后研究

一个服务部署多个节点,一个节点对应一个消费者,怎么保证同一时间内只消费一条消息,或者你说一下他的一些相关的配置。

幂等性设计,通过redis或者数据库唯一键

被黑客攻击,每秒一G,持续一天,怎么解决?

遇到过最复杂的问题是什么?

开发遇到最复杂的业务场景是什么?

#你觉得今年春招回暖了吗##我的失利项目复盘##牛客在线求职答疑中心#
全部评论

相关推荐

霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务