你做过的项目中的遇到过最难的问题是什么?

你的思考思路和解决方案是什么?

【特别说明】此问题属于「BOSS 钓鱼」专题,提问者正在招聘高薪岗位,如果你使用真实身份发布回答,BOSS 将可直接查看你的在线简历,并选择是否与你主动开聊。

回答·191
最热
最新
  • @Transactional 事务注解和并发加锁,导致数据不一致。 问题描述:减库存的操作,读取库存大于等于 1,就减少库存,并且添加订单表。加入了 ReentrantLock 作为同步锁,方法使用@Transactional 注解修饰。测试发现订单表增加了多个。 解决: 1 先查看代码写的是否有问题,无。 2 然后重启编译器,无法解决。 3 这个问题,像是读取到了缓存,库存并没有超卖,仅仅订单多添加,说明锁是起作用了的。考虑是不是 mybatis 缓存和数据库缓存,关闭 mybatis 二级缓存,给查询语句加 forupdate 排它锁。依然无法解决 4 百度事物注解在并发情况下失效,复习代理模式和事物特性后了解原因,先加锁再加事务,得到解决。 原因:@Transactional 是以代理模式实现的,在线程 1 开启事务后,获得锁进行执行,'执行完毕释放锁,但此时并未提交事务。线程 2 此时获得锁,进行执行,查询到库存为 1,并且修改库存,添加订单表,进行提交,释放锁。线程 1 也提交事务,导致订单表重复添加。
  • 现在的后端开发,要会前端,还要会运维,偶尔还要做产品经理。想吐。 java,spring boot,spring cloud,vue,redis,mysql,docker,k8s,elasticseach,axure,react native...  还有各种技术要学,现在开发真复杂。
  • 解决思路就是先找到问题的根因在哪里,然后才好对症下药。 最难解决的问题是曾经在一个项目中使用的是 mongodb 来做全文搜索,而存在 mongodb 里的文档是都是几 K 至 100 多 M 的大小,导致的问题就是压测时当用 mongodb 做搜索时,其内存会一直不停的增涨,直到耗尽整个物理内存最后宕机。为了解决这个问题几乎把 mongodb 官网的文档给查了一个遍,都没有找到解决方案,因为他就是这样设计的,那时还用的是 mongodb3.x 的版本。后来就用 cgroup 来限制 mongodb 进程的内存消耗。但仍然治标不治本,因为当内存达到限制的最大内存时仍然会宕机。最后采取用 shell 脚本定时查系统内存当达到一定的阈值清除文件系统 cache 的办法,但仍然不行。仍然解决不了问题,系统吞吐量更差了。后来就换成了 elasticsearch,因为它在满足搜索的前提下,还有堆内存自动回收。但也有会碰到当搜索出来大文档对象时,对象直接从 young 区进入 old 区而导致 oom 的问题,但相对之前 mongodb 的情况已经有了很大的改善,虽然仍然没有彻底解决大文档对象搜索导致 OOM 的问题,这就是曾经碰到的最难解决的问题。
  • 技术不是问题,难的是人心。遇到最难的问题是,上一个技术把 session 改成通用的了,没有关闭的同时,连接过多,各种冲突。没有 spring 管理,纯面向对象。  而项目过大,全开测试让你要等很久。高并发导致全部卡在一起。没有 maven。  百万的数据错误,你需要写程序重新分割数据。当然以上的问题是日积月累的错误,也不是你的责任,但你需要在一周完成修改,否则就是没有经验。    这时你需要按照他的想法完成新的任务,好不容易完成了,你就会被骂说查询速度过慢。 超大数据的查询速度需要在一秒以内完成。 否则就别干了
  • 跨数据库事务🌚🌚🌚🌚
  • 做过一个发证机构的信息化项目,有个页面要求一个检索要处理几张大表的联查,大概是 50 万数据和几千数据的联查,由于需要对历史数据和旧系统的兼容,架构和设计的改动已经不适合处理这个功能,最主要的,客户要求查询结果在 5 秒内一定要返回,虽然是 oracle 数据库,优化 sql 的方式也不会起到太大作用,关键当时项目组条件有限,并没有 dba。作为技术经理,当时因为紧急,我的处理就是用线程并发把耗时的数据库操作在新线程内处理,提前返回页面相应,至于并发的操作如果失败,会有个反向处理逻辑来保证最终结果的一致。得到了客户的认可
  • 在我工作这两年时间里我认为最难的地方应该就是 oauth2 集成实现单点登录了,一方面是自己能力不到位另外,oauth2 这个组件代码实现确实不太好,公司需求又比较复杂,需要各种自定义,自己想重写这个组件的心就有了,但是被上司给否了,不管怎么样,目前基本功能实现了,也基本适用于公司的应用场景了,多少还有一些小问题,在解决。
  • 算法上的困难才是真的难 有一次要解决一个分配客服给客人的需求:客人随机的进来,然后从客服中选一个给客人服务,要求每个客服都能分配到,就是轮询,客服有个权数,最小 1,第一轮所有客服都跑一遍,第二轮就跑大于 1 的,第三轮就跑大于 2 点,……当没有可轮询的时候就回到第一轮,…… 当时想在 SQL 里做,但后来没搞定,只好在 Java 里实现了🥺
  • 公司一个新项目,做个 app 由于自己从没有搞过,慢慢学习,cordova  angularjs  半个月时间的学习,知道了怎么使用插件,人脸识别以及安卓和苹果的打包。尽管我是一个搞 JAVA 的后端,但是当 app 出来的时候还是有很大的成就感的,学无止境
  • 在开发过程中最难的是,甲方领导不懂技术,需求天马行空,手下员工欺上瞒下,最后弄得需求凭嘴说,一周改七遍,改完以后,领导大发雷霆,手下员工以不符合领导要求为原因,甩锅给技术。最后程序员大晚上 12 点还在加班赶工期。请问项目开发过程中,到底谁犯了错?