人生第一份工作■培训班出身需隐瞒经历?商业项目经验怎样写?程序员面试准备盘点( 四 )


可能会有候选人认为面试官不能慧眼识珠 , 或者感叹给到的工资很低 , 但如果你一方面在面试中只展示增删改查 , 另一方面大谈特谈非技术方面的亮点 , 或者给出的亮点非常不值钱 , 那么这就怨不得面试官了 。 其实 , 只要是个商业项目 , 一定能挖掘出很多亮点 。
1、项目管理方面:Maven、Jira、Jenkins部署、Junit单元化测试 , 甚至Docker、K8s , 这些点其实面试时没法深入问 , 你只要说明了 , 就能证实一定的项目管理和部署能力 , 而且这和工作年限无关 , 哪怕才2年经验的人同样可以展示 。
2、项目监控或业务埋点 , 比如CAT、Zabbix , 再不济可以是监控log里exception、error关键字 , 以此引申出通过检查日志分析并排查问题的能力 , 面试中 , 借此还能引导到JVM调优 , 数据库性能优化和分布式组件方面的问题 。
3、Java核心这块就不说了 , 稍微看些资料 , 就能挖掘出异常处理规范、快速失效、线程并发、HashMap等问题 , 而且这块还可以结合底层代码讲 。
4、数据库性能优化方面 , 可以结合索引和执行计划 , 如果可以再带出MyCAT 。
对于初级开发而言 , 如果能充分展示上述方面的能力 , 一般的公司应该没问题 , 小公司就更不说了 , 如果再能展示分布式组件方面的能力 , 估计挑战下大厂也没问题 。 但本文的主题是结合项目展示技能 , 下面再给出些“技术结合项目业务”的说辞 。
1、集合方面 , 我们项目在遍历Arraylist等对象时 , 需要考虑快速失效的问题 , 因为在测试过程中发现过此类问题 , 然后展开 。
2、数据库方面 , 我们项目会对慢SQL进行监控 , 发现后会结合索引和执行计划调优 , 比如在订单模块里 , 一个SQL过慢 , 发现是因为表关联太多 , 经过调整表结构后 , 此类问题就解决了 。
3、我们项目上线后 , 用Zabbix监控内存 , 一旦发现过量 , 则会用Dump观察镜像 , 并根据日志排查问题 , 发现过的内存问题有 , 在订单模块里 , 过量使用ThreadLocal没释放 , 或者是用了大量的ArrayList没clear 。
4、我们项目里 , 由于需要从网络接口多次获得数据 , 所以用Redis缓存数据 , 在实践过程中 , 会适当地设置超时时间 , 而且会用xx策略设置缓存主键 , 以防缓存被击穿 。
从中能看到 , 这些说辞结合了业务 , 比起单纯地讲理论要好很多 , 你这样一说 , 就能让面试官确信你确实有过实战经验 , 如果你说得好 , 甚至还能让面试感觉你还有实际的排查问题解决问题的能力 。 而且 , 上述说辞都是很基本的 , 成本也不高 , 大多数项目都会用到 。 相比很多候选人无视这些亮点 , 只展示增删改查的能力 , 你结合项目再多挖掘些 , 面试官一定会认为你比别人强 。
人生第一份工作■培训班出身需隐瞒经历?商业项目经验怎样写?程序员面试准备盘点
本文插图
以一组提问方面为例 , 分析如何在面试中准备值钱技术
这里就之前提到的数据库方面的问题 , 分析如何结合项目准备值钱技术 。
1、基础层面:用过哪些数据库 , 多少经验?JDBC里PreparedStatment的用法 , 以及索引的概念等 。 这部分通过背题可以通过 , 问题不大 。
2、调优层面:索引、执行计划的技巧 , 比如哪些SQL用不到索引 , 并问在项目里建过哪些索引 , 执行计划要看哪些要素 。
先全面了解索引 , 执行计划等概念 , 了解的时候需要涉及底层 。 然后观察当前项目的的慢SQL,看解决这些慢SQL时 , 是怎么用到索引的 , 在看执行计划时 , 是根据哪些要素分析痛点 , 比如是因为没走索引还是走全表扫描 , 据此准备若干个例子 。 面试时一旦被问到 , 先说索引数据结构 , 复合索引 , 执行计划观察要点等理论知识 , 再结合你准备好的实际问题 , 说下如何在项目里用的 。


推荐阅读