社招人员在面试时,大概率会被要求谈一谈本人印象粗浅的我的项目经验。
之前始终认为这个问题没有什么技巧性,然而直到最近本人频繁面试了一些应聘人员,我发现大家的答复区别还挺大。
有些是的确没有什么好的经验,有些是案例很好,却说不出重点。
其实对于这个问题,面试官想对你有一个摸底,看你解决问题的能力强不强,根据此对你的常识和能力做一个初步的评估。
所以我感觉这个问题答复好了,还是蛮加分的。
如何逻辑清晰,构造明显的表述本人的我的项目经验?
第一步,筛选适合的案例
1. 是要实在案例。
这个案例肯定是要本人亲手做的,如果不是,那么后续被诘问细节的时候一旦露馅,就完蛋了。
2. 案例尽可能小。
小,能力形容的具体,也更能聚焦某一点,避免面试官发散到你不相熟的点。
比方:优化了首屏加载工夫就要做性能优化更小,更具体,也更平安一点。
- 案例尽可能有量化指标
比方,性能晋升了 20%,开发品质晋升了 20% 这种。
-
筛选复杂度高的案例
面试的考察点无非在于考查数据结构,底层常识,算法以及工程能力。
因而,一个简单的案例,能囊括多个知识点,会有十分出彩的成果。
比方,重构了某模块,就综合了工程能力 / 设计模式 / 数据结构等常识.
第二步,结构化表白
筛选案例之后,怎么向面试官表述分明呢?
咱们遵循的法令是 SCQA 法令。简略来说,就是背景,问题,计划,后果。
第一,要讲清楚案例背景
可能是需要,可能是优化,可能是技术债要偿还。肯定要尽可能简略的形容,让面试官听懂,最短的工夫内能评估出这个背景的难点在哪里。
能够找个共事试一试,看能不能达到找个成果。
第二,就是形容实现该案例的难点在哪里。
简单的案例可能有多个难点,重点突出三到四个难点。
第三,为了解决这些难点,你做了什么?
这是十分要害的一部分,重点是突出本人解决问题的思路和能力。能够针对于刚刚说的每一个难点,一一论述本人的解决过程,采取了什么样的计划,为什么要用这样的计划。
其中,为什么用这样的计划,是最精髓的局部。一般来讲,计划的取舍就是性能 / 扩展性 / 算法的取舍。要重点思考一下。
第四,最终的后果是什么。
有量化数据的就论述一下量化数据,如果只是一个需要,的确没有什么量化数据,那就不用说。
举个栗子
Up 主在之前换工作时,筹备了一个案例,这个案例我感觉成果就很好,从一轮用到了四轮。(前端案例)
背景:
一个需要,将逻辑表达式的运算过程应用线框图以串并联的模式展现进去。
比方逻辑表达式 (a || b)&& c, 转换的效果图如下:
难点:
这个计划的难点在于两个
第一是,逻辑表达式的转换
第二是,线框图的绘制。
线框图的绘制,我抉择了应用阿里的开源框架 G6
应用该框架,我须要将表达式转换成两个数组,一个数组用来示意有哪些框和框的地位,一个数组用来示意框之间的连贯关系。
线框图显著是一个树,而为了缩小树的复杂度,因为跟产品协商,把效果图转换为
![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b1a1016f771f4cc59378c9e2675caf1f~tplv-k3u1fbpfcp-watermark.image)
于是整个计划的难点就变成了如何将逻辑表达式的字符串,转换成一棵二叉树。
计划:
实际上,逻辑表达式的运算人造就是一个二叉树的,因为咱们每次须要取出两个条件,而后进行一次运算.
如果 a 和 b 是 || 运算,那么 a ,b 就是子节点,res 是父节点。
如果 a,b 是 && 运算,那么 a 是 b 的子节点,b 是 res 的子节点。
这样就串起来,就是一个自底向上构建的二叉树。
因而,只有咱们领有了表达式的运算程序,就很容易建设起这棵树。
逻辑表达式存在着运算优先级,因而,咱们应用中序表达式转换为后序表达式的算法来解决优先级问题。
(中序和后续运算表达式的算法百度一下即可,要害是应用了栈。)
这样的话,计划整体就很清晰了
- 将中序表达式转换成后序表达式,转换后果就是一个栈。
- 将栈转换成一个二叉树
- 将二叉树转换成 G6 须要的两个数组
整体一套做下来之后,发现输入的图例不是很好看,间断存在多个 || 关系时,子节点的地位没有层次感,而且可能会重合,因而每个节点在计算地位时,又加上了二叉树的广度遍历。这样计算出来的图例更加好看。
后果:
很好的实现了需要,并把这个需要的解决方案在外部分享了一次。
这个案例在前端畛域其实复杂度有点高的,重点在于数据结构和算法。
其实算不上一个很重要的性能,然而我认为这个案例能很好的展现我解决问题的思路和能力,同时这个案例也在前端中不是很常见,所以我抉择了这个案例。
面试官听了这个案例之后,细问了几个细节,比方广度遍历的算法。问分明之后,基本上就不在问数据结构和算法上的问题了。所以面试整体就很轻松了。