昨天那个人面试我,说解决项目中什么难点,我很好奇,框架实现的不是挺好的吗?各位大佬项目中遇到什么大难题了吗?
1.高并发场景下如何保证系统稳定性(加机器?不好意思,有预算成本。java性能差不多?不好意思,同样的逻辑,不同代码可能是指数级差距。)
线程池是基础?不好意思,线程池参数如何调整才能让cpu和io利用率高?如何快速拒绝请求,如何处理任务堆积?
2.分布式环境如何保证数据一致性?分布式事务?最终一致性的实现?
3.当多线程环境下都无法处理峰值请求的时候怎么办,如活动?
4.当用线程和线程池时threadlocal是否有坑,如果有,坑是什么?
5.是否有遇到线上紧急问题,如宕机、卡顿、bug等,如何快速反应和解决,具体解决方案?
6.是否有关于数据库主从,消息等的使用经验,如何处理这些延迟?
7.是否有遇到慢sql,如果遇到如何分析和解决(过程)?
....
项目中遇到的问题可多可少,可难可简单,要看如何应对,如何解决;
当然还有就是做的少错的少,不做不错;
增删改查才是起步;
spring的事务的坑,spring @transactional public和自调用方法的问题处理
springMVC获取文件的一个隐患 记一次文件上传的坑
这个问题其实问得很刁钻。
它本质并不是问你一个有确定答案的问题,而是一个开放性的问题,主要是看你的层次。
如果你根本没有遇到任何难题,那么说明你开发经验就是严重欠缺的。
如果你遇到很多难题,那么这些难题一个是可以看出你之前的项目经验是什么,做了哪些项目,和你的简历能不能对上,你有没有为了面试而虚构或者夸大简历。
另一个是看你的水平在哪里,处理的是一般技术性问题,还是相对来说有一定难度的问题,你水平如何。
最后可以看出你的学习和应变的能力。一些难题本身是客观存在的,比如说在有限的硬件上实现一个非常耗时的操作,或者在没有文档的情况下需要逆向研究某种协议,有些表面上看是不可能完成的,但是现在你的客户就让你做,你怎么办,这个考察的是你应变、决策、学习、合理找到解决办法的思维方式。
当然,从你现在的描述看,你完全还没有这种意识,完全是一个没有什么项目经验的新手。如果面试的问应届生或者培训班刚出来的这种问题,我觉得说明面试的人没有找对合适的问题来面试。如同端出一座磅秤去称首饰的重量。
用框架开发过程中也会存在很多比较棘手的问题,例如并发的处理,锁表的处理,事务的处理或者系统故障等解决方式,有好多好多,面试官会根据你的回答看出你的经验和所处在的层级,和薪资或者是否录用你有很大的权衡关系。
这么问主要还是想看你在项目中的定位,解决了困难问题是哪些方面,综合考察你的能力和解决的方式方法,正确真实对待就好了