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,持续一天,怎么解决?

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

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

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

相关推荐

最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务