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


3、排查问题层面 , 请结合实例 , 给出监控慢SQL的做法 , 并讲下用执行计划等分析和解决慢SQL的方法 。
准备下观察日志 , 观察监控的说辞:在项目里 , 是用Linux的xx工具监控慢SQL , 或者cat监控如何配置 , 如何报警 。 再结合若干线上案例 , 讲下引发慢SQL的原因 , 以及你是如何通过观察日志分析问题 , 最后通过什么方法解决的 , 解决的方法无非也是建索引 , 引入Redis等 。
4、如果是资深开发和架构师岗 , 再问MyCat、Redis集群方面的问题 , 比如如何部署、分库规则、缓存时间等 , 也要求讲述分析排查和解决实际问题的经验 。
这块首先需要讲配置 , 比如分库规则如何配 , Redis超时时间怎么配 , 集群如何用zk管理的 , 讲的时候结合项目 。 同时也可以根据常见的问题 , 比如kafka消息重复消费 , 或者MyCat遇到没分库规则的SQL , 说下你是怎么解决的 。
或许面试官未必会照着上述思路来提问 , 但面试官一定会核实你的技术是否有项目经验 , 所以大家同样可以围绕“基础知识”、“结合项目的调优技能”、“如何监控和发现问题”以及“解决线上问题用到的技能”这些方面准备面试说辞 , 面试时一一展开 , 刚才也说了 , 再简单的项目也能挖掘不少值钱点 , 你就照着这个思路准备 , 一定能挖掘到不少亮点 。
至于该准备哪些方面的亮点?在最近面了不少Java开发 , 据此来说下我的感受:哪怕事先只准备1小时 , 成功概率也能大大提升和已经提到过的如何准备Java面试?如何把面试官的提问引导到自己准备好的范围内?博文里 , 已经有了足量的说明 。
人生第一份工作■培训班出身需隐瞒经历?商业项目经验怎样写?程序员面试准备盘点
本文插图
以“项目经验”外带“实际解决过的问题”来容纳技术亮点
刚才已经反复提到 , 你在面试中给出的亮点技能需要结合项目经验 , 但很多同学在之前开发的模块里 , 用到的技能其实是非常有限的 , 说白了就是增删改查外带一些调优 , 这也是普遍现象 , 相反如果一个初级开发 , 在面试中说 , 之前开发的模块又有JVM调优 , 又有分布式组件 , 再外带数据库性能优化 , 似乎可信度不高 。
对此 , 你可以把很多技术的实践经验归纳到“解决过的问题”上 , 比如你平时确实只做增删改查 , 这哪怕对高级开发也不丢脸 , 但你平时工作很上进 , 遇到线上问题会主动参与 , 比如有OOM问题 , 或者Redis缓存被击穿 , 或者其它因分布式组件等方面而导致的问题 , 你参与排查并解决 , 那么这些自然可以归结成相关技术的项目经验 , 而且你还能以此为例 , 展示自己分析日志解决问题的技能 。
这样的话 , 在项目里你就有足够多的项目 , 来容纳网上提到的各种分布式组件以及其它值钱技能 , 甚至如果你有能力 , 还可以说参与过项目的部署上线以及压测 。 总之还是这句话 , 理论技能本身不值钱 , 面试官一定只关心你 , 如何在开发、压测、分析线上问题以及上线时 , 如何使用技术的 。
人生第一份工作■培训班出身需隐瞒经历?商业项目经验怎样写?程序员面试准备盘点
本文插图
如果从战略上藐视问题 , 你会发现提升技能不算个事
本文给出的观点是 , 在面试时 , 程序员该结合项目讲述各种技能 , 看上去这是个正确的废话 , 但根据本人的面试结果 , 在面试前能结合项目准备亮点的 , 而且在面试中能结合项目充分展示技能的候选人并不多 , 这也是本文的价值 。
其实 , 从战略上讲 , 初级开发升级到高级开发需要提升的点非常有限 , 而高级开发提升到架构师所涉及到的技能也是能举例说明的 , 更何况 , 在面试中能证明自己达到高级职位要比在工作中证明要容易很多 , 所以架构师等高级岗位也就这回事 , 并不是可望不可及的 。


推荐阅读