面试官:连多线程都没有用上,你这3年都做了些什么项目啊

点击上面↑「爱开发」关注我们

每晚10点,分享软件开发资源、社交电商资源



张工毕业3年了,一直在做java开发,在这3年里,张工做过不少项目,最近到某互联网公司面试,做了笔试题,面试官看了觉得还不错,于是就让他手写简单的多线程的例子,张工写不出来,面试官说:“你工作3年了,连多线程都没有用上,这3年都做了些什么项目啊。”张工一脸的无助,不过确实不应该,多线程这个知识点,是需要掌握好才对。
3年了,虽然项目也做不了不少,遗憾的是,做的大多数功能模块都是类似的,大多数是增删改查,就这样三年间重复的制造轮子,平时也没有思考如何优化等。
行业有句话:面试造飞机,入职拧螺丝。天天喊着高并发高可用,可实际却天天写着增删改查。周而复始。增删改查是必须要掌握的,可要是能写出高性能的增删改查也不是一件容易的事情,没有两三年沉淀是远远不够的。
刚毕业时,从事网站开发,入职的时候,我也是天天写增删改查, 领导分给我的第一个任务是,建一张资讯表,然后有新增资讯,编辑资讯功能,就这样编写好调试时,还有bug,就得学会打印日志, logger.info("news{}",param1). 这样打印日志。
那时候写的接口性能也不怎么样,耗时很大,就要分析到底是什么原因导致的,读数据库慢,还是程序慢,需要监控每个接口方法的调用情况以及响应时间,这时候就有两种方案选择了,一是在接口方法开始和结束时都计时并将两个时间相减得到响应时间。
 


 
 
    Long start = System.nanoTime();
    doSomeThing();
    Long end = System.nanoTime();
    Long time = end-start;

 
这种当然是可以实现需求的,只是太过于繁琐。如果接口有100多个,甚至更多,这种写法就不是很优雅了。
 
我们可以尝试用 Spring AOP很优雅地解决这个问题,我们可以用Executors.newCachedThreadPool()去构建线程池,当然这种方法也有不妥之处,创建线程池会导致线程数过多,我们可以在开始自定义一个线程池优化, 这样一步一步优化改进。
 
及时关闭流,虽然在调试时,不会报错。Java编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,要及时关闭以释放资源,因为对这些大对象的操作会造成系统大的开销,稍有不慎,将会导致严重的后果。
 
小编认为,平时在工作中,除了完成领导安排的任务外,还要多做总结
 
一是要多思考,思考问题有没有更好的解决方案
 
二是要多实践,在实践中找到最适用当前场景的解决方案
 
不知对此你是怎么看待的,欢迎交流!



往期精选推荐


闲聊区


育儿区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值