一些需要不断提醒自己的 放在这儿
- 类→抽象类→接口
- 带着问题去看源代码,没必要把源代码看完
- 看源代码最大的技巧是看英文注释,另一个技巧是日志+DEBUG
- 如果没有时间去深入研究一款软件,那么从宏观层面理解它的设计思想是重要的
- 读书很重要,包括非技术书
如何快速的提升呢
自学的问题
- 重难点是什么?
- 该学到什么程度?
- 疑难怎么得到解答
- 如何进行项目实践
贪多嚼不烂
从事任何方向的技术研究,不知道该干什么的时候,就问自己四个问题:
- •这个方向上最新进展是什么? 都知道吗?
- •这个方向上最著名的专家有哪些?他们的研究都看过吗?
- •这个方向上最著名的技术社区有哪些?精华帖都看过一遍吗?
- •这个方向上最重要的文章、工具有哪些?文章都看过吗?工具都分析过吗?
编程第二阶段的要求
不过,一般工作在5年内的候选人,大多仅仅是能“山寨”别人的代码,也就是说能在现有框架的基础上,照着别人写的流程,扩展出新的功能模块。
比如要写个股票挂单的功能模块,是会模仿现有的下单流程,然后从前端到后端再到数据库,依样画葫芦写一遍,最多把功能相关的代码点改掉。
其实我们每个人都这样过来的,但在面试时,如果你仅仅表现出这样的能力,就和大多数人的水平差不多了,在这点就没法体现出你的优势了。
我们知道,如果单纯使用SSM框架,大多数项目都会有痛点。比如数据库性能差,或者业务模块比较复杂,并发量比较高,用Spring MVC里的Controller无法满足跳转的需求。
所以我一般还会主动问:你除了依照现有框架写业务代码时,还做了哪些改动?
我听到的回答有:增加了Redis缓存,以避免频繁调用一些不变的数据。
或者,在MyBitas的xml里,select语句where条件有isnull,即这个值有就增加一个where条件,对此,会对任何一个where增加一个不带isnull的查询条件,以免该语句当传入参数都是null时,做全表扫描。
或者,干脆说,后端异步返回的数据量很大,时间很长,我在项目里就调大了异步返回的最大时间,或者对返回信息做了压缩处理,以增加网络传输性能。
对于这个问题,我不在乎听到什么回答,我只关心回答符不符逻辑。一般只要答对,我就会给出“在框架层面有自己的体会,有一定的了解”,否则,我就只会给出“只能在项目经理带领下编写框架代码,对框架本身了解不多”。
其实,在准备面试时,归纳框架里的要点并不难,我就不信所有人在做项目时一点积累也没,只要你说出来,可以说,这方面你就碾压了将近7成的竞争者。