Java 工作 3 年, crud2 年,面试官问起项目中遇到什么技术难题怎么解决? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yang0225
V2EX    程序员

Java 工作 3 年, crud2 年,面试官问起项目中遇到什么技术难题怎么解决?

  •  1
     
  •   yang0225 2023-03-26 17:05:20 +08:00 6646 次点击
    这是一个创建于 972 天前的主题,其中的信息可能已经有所发展或是发生改变。

    工作 3 年,crud2 年,面试官问起项目中遇到什么技术难题怎么解决的,不知道怎么答起,想吸取各位大佬的在项目中遇到的一些普遍技术问题以及解决方案,来回答面试官的问题,技术栈可以 spring 到 springcloud redis 中间件 分布式之类的,让面试过程中稍微有些亮点。求求求了! crud2 年太难受了!!!

    32 条回复    2023-03-28 09:27:27 +08:00
    yangyuhan12138
        1
    yangyuhan12138  
       2023-03-26 17:21:44 +08:00
    马一个 我也头疼这个问题
    yang0225
        2
    yang0225  
    OP
       2023-03-26 17:31:58 +08:00
    @yangyuhan12138 TWlyYWl0b3dhX1lhbmdfMjI1 base64 麻了头疼啊
    pengtdyd
        3
    pengtdyd  
       2023-03-26 19:22:17 +08:00
    《 crud 能有什么技术难题》
    Saitama
        4
    Saitama  
       2023-03-26 20:48:33 +08:00
    马一个. 前端也一样,每天写点破烂 CRUD 页面。
    我觉得唯一的解法就是多看 Github 。看看那些大的开源项目都用了啥,一个一个学.
    maigebaoer
        5
    maigebaoer  
       2023-03-26 20:51:08 +08:00 via Android
    我也想知道 crud 有啥技术难点蹲一个
    ufo5260987423
        6
    ufo5260987423  
       2023-03-26 21:04:32 +08:00   1
    1 、幂等性;
    2 、如何保证数据一致性并针对性能需求调整方案;
    3 、DDD ( Domain driven design );
    4 、流程引擎;
    5 、鉴权系统和微服务之间的关系;

    我说的这些应该还算 CRUD 吧?笑。
    dode
        7
    dode  
       2023-03-26 21:06:04 +08:00
    旧系统运行维护
    LLaMA
        8
    LLaMA  
       2023-03-26 21:07:30 +08:00
    技术难题:领导太傻逼
    解决方案:润
    lessMonologue
        9
    lessMonologue  
       2023-03-26 21:12:41 +08:00
    # 6 楼说的很详细了,补充一个最近遇到的问题
    list 列表直接查 mysql ,导致 mysql 的 thread_running 飙升,怎么排查怎么解决
    orikey
        10
    orikey  
       2023-03-26 21:14:41 +08:00
    我简单聊一下。工作背景:工作两年,一年电商经验,一年数据产品经验。两家大厂经验。
    其实所有的工作 如果进行拆分的话 可以理解为:
    1 、处理输入
    2 、逻辑处理
    3 、处理输出
    那么这个地方呢 crud 主要就是在处理逻辑这个 stage 上进行的,所谓高并发 其实我个人感觉我们不妨把目光看到第一个个和最后一个 stage ,如果我们后台框架使用的是 dubbo 默认配置的网络线程池是 200 ,现在我们要面对场景的 qps 高于 200 如何进行处理呢,举个例子,我们现在对接三方直播平台,我们是一个电商,需要自动把库存信息同步给直播平台,那么我们仅仅 sku 的变动调用就大于这个这个值了,这就导致我们对外提供的其他服务别人在调用时会显示不可用,那么我们解决这个问题最简单的一个办法就是在处理输入的时候 可以实现通过布隆过滤器 根据比如店铺 id 或者商品 id ,过滤一部分数据,同时数据同步部分的逻辑直接进行异步处理,我们直接返回 true ,但是发送了一个库存处理消息出去,然后这个地方我们可以在深入,比如对消息的 offset 或者 publishtime 做监控,线上出现消息挤压我们应该提前做好对应的预案,同时我们也可以考虑进行一定程度的流量合并,比如如果库存是 6000 ~ 4000 从第一次调用的时候我们注册一个 5s 左右的定时调度任务(可以参考使用海豚调度),同时这个值加入 redsi 给一个 5s 的锁,这期间的同一个商品的库存变更不处理 5s 后由定时任务回调你,同时针对回调失败的情况自动落库,如果有海量同步失败的数据,就要继续考虑 mysql 中的数据要用 spark 或者其他方式同步一份到 hive 中,然后做 ETL 的处理 比如发消息给你的系统,然后系统中针对这种情况进行异常处理,后续在深入,比如可以在内部的这种数据平台上配置小时级别的监控,如果失败库中数据不为空并且自增 id 有变化则进行同步,并且记录最后一条同步的 mysql 记录中的自增 id 信息,然后自动进行 trigger 。
    这样的话就是一套比较完整的方案,不同平台之间的 数据同步 类场景 我们都可以使用这种思路进行思考
    godwei
        11
    godwei  
       2023-03-26 21:20:15 +08:00
    顶一顶,等大佬回复
    yao00jun
        12
    yao00jun  
       2023-03-26 22:16:01 +08:00
    顶一顶,等大佬回复
    yang0225
        13
    yang0225  
    OP
       2023-03-26 23:13:23 +08:00
    其实像我们这些长期 crud 在技术中,确实很难,真实遇到真的问题和解决方案,我发帖的意思是各位大佬们可以稍微分享下,一些比较普遍的技术问题,好在面试中没有那么哑口无言。
    yang0225
        14
    yang0225  
    OP
       2023-03-26 23:14:13 +08:00
    @orikey 感谢大佬的知识输出,要得就是这种哈哈哈
    yang0225
        15
    yang0225  
    OP
       2023-03-26 23:16:25 +08:00
    @ufo5260987423 感谢大佬输出
    tairan2006
        16
    tairan2006  
       2023-03-27 08:22:17 +08:00 via Android   2
    B 端 CURD 难点在于抽象,啥表单引擎流程引擎,复杂的 RBAC 设计。
    C 端的 CURD 难点在于性能,量上来了啥问题都有…
    zhoudaiyu
        17
    zhoudaiyu  
    PRO
       2023-03-27 09:05:13 +08:00 via iPhone
    @lessMonologue 那么这是为啥呢
    hopelessu
        18
    hopelessu  
       2023-03-27 09:28:00 +08:00
    留眼
    tedzhou1221
        19
    tedzhou1221  
       2023-03-27 09:32:45 +08:00
    使用服务编排(或简单的流程引擎)优化复杂数据的查询
    liuxu
        20
    liuxu  
       2023-03-27 09:37:02 +08:00 via Android
    qps = 线程池数量 * 每个线程每秒处理数量

    200 线程池,每个请求 100ms ,结果是每个线程每秒处理 10 个请求,200 个线程池 pqs 为 2000

    对 qps 有要求的,最好选个处理能力强的异步框架 /语言,线程池类的框架模型可以用但不算最好的方案了
    diagnostics
        21
    diagnostics  
       2023-03-27 09:41:51 +08:00
    CRUD 最后不也得面向用户层嘛,不管用户是其他服务还是真实用户。

    - 输入
    - 统一校验框架
    - 有些查库判断,做到这一层,例如用户 ID 不存在这种,怎么去做呢?所有用户 ID 放 Redis ?可以优化
    - 逻辑处理
    - latency 是多少?给了多少资源?按利特尔定律去压测,能到这个吞吐量吗?
    - latency 能降低吗?例如主要是查库的 IO ,那就加 Redis 缓存,缓存失效问题怎么解决?缓存命中率怎么提高?
    - Redis 有缓存了,还想再优化,有资源的情况下(内存),能不能上内存缓存?关于缓存的问题又来一遍
    - 放到内存上了,怎么压缩内存(更改数据结构)避免 GC 带来的延迟了? GC 停顿怎么优化(垃圾收集器,zingJDK )
    - 回到 DB 这一层,有分页查询,那么 large page 下索引失效问题怎么解决呢? n + 1 问题如何优化呢?
    - 输出
    cnzjl
        22
    cnzjl  
       2023-03-27 09:46:10 +08:00
    遇到了难题其实并不多,比如项目集成的框架自带 shiro 鉴权,通过配置文件没法修改默认配置,最后是通过 BeanFactoryPostProcessor 解决问题;还有就是定时任务同步第三方数据,同步时间过长会锁表造成数据库卡死,这时候通过定时任务作为独立服务运行,新建数据中转表来存放数据,在数据处理完成后一次性导入到业务表中(使用 Insert into...from ),还有就是 java ,scala 混合开发编译。。。好像都是小问题
    ForkNMB
        23
    ForkNMB  
       2023-03-27 10:25:10 +08:00
    线程池参数设置是否合理,比如有个服务 CPU 飙升,就是线程数开太多了
    redis 缓存,量太大,查询太频繁,网络有波动容易触发告警,加个很短的本地缓存可以解决问题
    还有就是 redis 缓存 @Cacheable 注解失效了 断点源码发现 jackson 反序列化异常了 有人在 dto 里加了多余的 get 方法 tmd
    Transactional 注解失效 以及用了注解还是超卖的原因分析之类的
    都是 curd 仔线上问题遇到的 =_=
    Corrots
        24
    Corrots  
       2023-03-27 10:52:45 +08:00
    同感,蹲一蹲
    litchinn
        25
    litchinn  
       2023-03-27 10:53:18 +08:00
    我感觉遇到技术难题大部分时候都不是费很大劲去攻克它,而是转而寻找其他替代方案或者更改需求,选择最简单的那个。
    技术难题这东西,就像是某些知识一样,你会了之后觉得很简单,甚至感觉不值得拿出来一说,当你不会时扣脑袋也想不到那去。
    zzzmh
        26
    zzzmh  
       2023-03-27 10:59:04 +08:00
    我 7 年了,该回答不出的问题还是回答不出,就不如在自由发言的时候多讲讲自己精通的方面。问答的时候不知道就说不知道,也算是节约时间。
    yaphets666
        27
    yaphets666  
       2023-03-27 11:27:23 +08:00
    网上找开源项目,里边的难点,灵活运用成自己项目里的,不用实际上做过,理解了,懂了就可以说。像服务端,无非是,并发,可用,性能问题等等。前端,无非是 ci ,webpack ,模块化,抽象,微前端等等。还有就是遇到某个问题,通过阅读源码发现解决办法等等
    IndieCreator
        28
    IndieCreator  
       2023-03-27 18:42:43 +08:00
    这个是引入外企的面试风格,回答不一定要非常的难点,也不一定需要你自己经历的,但是要体现这几点
    1. 这个问题有点难
    2. 我处理这个难点体现了我的 ownership, 提现了我处理复杂问题的能力
    3. 我处理这个难点后有什么收获,后续再某某问题的处理中应用到了.
    dwlovelife
        29
    dwlovelife  
       2023-03-27 20:19:33 +08:00
    说几个吧目前做的项目百万用户
    dwlovelife
        30
    dwlovelife  
       2023-03-27 20:23:23 +08:00
    随便说几个吧目前做的项目百万用户
    1. 数据安全,防爬和加密等
    2. 流量裁剪, 减少重复调用 [如交易端和中台有部分接口会重复调用 比如都需要获取活动信息 能不能一次调用 下游从上游拿取]
    3. 限流,接口限流以及 RPC 接口限流
    4. MDC 全链路追踪含 RPC 调用
    5. 服务器自动扩容
    xuanbg
        31
    xuanbg  
       2023-03-27 22:18:07 +08:00
    没有遇到过什么技术难题,要不你举个例子?
    Angzk3348
        32
    Angzk3348  
       2023-03-28 09:27:27 +08:00
    插眼学习一下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2585 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 12:49 PVG 20:49 LAX 04:49 JFK 07:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86