如何在面试中应对编程与算法面试?
在求职面试的过程中,编程能力也是面试官非常看重的一项能力。而对于编程这项能力主要的考察点也有三个维度:
初级:编程的基本功
编程的基本功主要考察的编程语言的基本语法,原理知识,以及一些在编程过程中的常见问题与解决方案。比如,如果面试官考察:九九乘法表,那么就是考察你的编程的基本功。主要看你拿到一个简单的需求后,能否实现出来。如果面试官考察垃圾回收机制这些知识,那么考察的就是你对于编程语言特性的理解。如果要是涉及到高级一点的元编程技巧,如果不理解这些知识,是无法完成的。如果面试官考察:深拷贝浅拷贝,这个场景其实在读写,修改一些嵌套结构的数据是非常常见的问题,那这个场景其实就是在考察你是否在编程过程中有发现一些问题,以及有掌握到对应的解决方案,包括多线程编程,都属于这类型问题。
高级:数据结构与算法
在具备比较扎实的编程基本功之后,就需要掌握数据结构与算法的知识。其实这门课是所有计算机相关专业同学的必修课,虽然对于测试工程师来说,我们常常吐槽它“面试造火箭,进去拧螺丝”。但是数据结构决定了你是否有一个更为扎实的编程基本功。以及我们不得不面对的现实问题,为了面试,也得冲! 自然在数据结构与算法中,我们也无需盲目学习,它也是有它自己的明确的学习路线和学习范围的。如果你的目标是中小厂,那么也要掌握一些较为基础的算法,比如冒泡排序,二分查找,快速排序等。如果你的目标是大厂,那么就要掌握更为深入的数据结构,比如线性表:链表、堆栈,非线性表:树、图等。
资深专家:设计模式
而如果能熟练掌握设计模式的用法,已经可以算作是一个测开的专家了。而设计模式的学习,通常是通过在开发各种工具或者平台过程中,是要时刻想着怎么让代码保持一个好的扩展性,可读性,可维护性。常用的设计模式通常有:工厂模式、单例模式、策略模式、装饰器模式等。
如何提升编程的基本功
对于大部分同学来说,我们首要完成的就是编程基本功的提升。如果没有一个好的编程基本功,代表在实际开发过程中,可能连一些简单的需求也无法完成。有一种极为科学的学习方法叫做 PDCA 循环学习法,以下为通过 PDCA 循环法学习 Python 的方式
**阶段 ** | **描述 ** | **对应学习方法 ** |
---|---|---|
计划 (Plan) | 设定目标和规划行动方案 | 制定 Python 一周的学习内容 |
执行 (Do) | 实施计划,收集数据 | 通过教程或视频学习 |
检查 (Check) | 分析数据,评估结果 | 通过练习验收学习结果 |
行动 (Act) | 调整和改进行动,制定下一步计划 | 查漏补缺,并开启下个阶段的学习 |
在熟悉Python的基本语法之后,则需要完成一些比较大型的需求去验证自己的学习效果:
- 开发一个简单的后端系统。
- 开发自动化测试脚本的框架。
如果能在此过程中,不停的去补充自己的技能以及在项目中历练,在一年半载之后,就会发现自己的编程能力就能有质的飞跃和提升。再具备一些基本的开发经验后,就可以进一步挑战算法与设计模式的学习:
- 开发像HttpRunner一样的测试框架。
- 开发一个好用的测试平台。
在这个过程中,你会发现如果不用设计模式与算法,那么很多需求的实现会变的非常难以实现。不停的重构,是每个开发者的宿命。自然在千锤百炼之后,你也会朝着一个技术专家之路迈进。自然,千里之行始于足下,同时万事也是开头难。最后送大家马斯克的一段话,共勉!
社会的竞争其实并不需要你比所有人都强,绝大部分人都是非常懒的,几年都不会去学习,不会进步。所以你只要稍微努力一些,确保超过全社会60%的人;如果你干什么事都专注一点,就可以超过社会上80%的人;如果你愿意在一件事上高强度的深耕个3-5年,进全社会前10%并不难,甚至5%也没有多大难度。