金秋九月,已快过去,回顾这一个月的辛酸血泪史,满满的都是收获。
我的背景:本科:软件工程专业;研究生:计算机技术专业。
本人技术不算好,纯属个人意见。
面过腾讯,阿里,百度,华为,小米,中兴,中移物联网。目前拿到百度,中移物联网,华为。小米和中兴面试结束等通知。腾讯、阿里已跪。
开始
我是从今年三月开始准备校招的,主要就是复习各门专业课(因为自己偏向于测试,所以在复习的时候会把测试相关内容加进去),主要包括数据结构与算法/软件测试/计算机网络/数据库/操作系统,外加时常练点Leetcode,保持住编码的习惯。
数据结构算法
特别重要!!!个人觉得复习的时候可以按照以下几点进行分类复习:
数据结构:字符串、顺序表(数组/链表/队列/栈)、二叉树(完全二叉树/二叉检索树)、图(相对而言考得比较少)、位操作(往往会出其不意让问题变得简单)
简单算法:排序、简单的动态规划、递归优化、查找
特别推荐两本书:剑指Offer和程序员面试金典,我是刷完了整整两本书,面试官问的绝大多数题都是从这里面找的。
计算机网络:主要考察TCP/IP,三次握手问了我两次。
操作系统主要集中在进程线程间通信,生产者消费者等。
数据库一般会给你一个场景,让你设计数据库表。
以上分析,可以看到最最重要的还是数据结构与算法。
软件测试
如果有意向往测试开发或者软件测试方向走的,可以参考以下建议:
1. 要去熟悉几个软件测试的工具,首先需要使用它,知道它是干嘛的,其次,如果可以,可以分析该工具的实现原理,看看工具源码是一种不错的手段。个人接触到的软件测试工具主要是基于白盒测试的,比如:FindBugs/EclEmma/JaCoCo/JUnit以及其他,网上搜索一大堆,根据自己喜好可以自己选择。
2.软件测试与质量保证相关理论需要熟悉一下,白盒测试,黑盒测试,功能测试,系统测试,性能测试,压力测试等。
3.面试官问的话,一般会给你一个场景,让你设计测试用例(比如微信红包功能(百度)、基本登录功能(腾讯))。或者问你一个工具,让你说出底层实现原理。
Java
个人熟悉的语言是Java,所以在Java上也付出了相当多的精力,推荐《Java编程思想》《Effective Java》《Java虚拟机》
核心内容:垃圾回收机制/Java内存/类加载机制/集合/多线程/同步。多看看Java集合的源码。
小结
1. 每天写点代码,途径:Leetcode/牛客网
2. 数据结构与算法必须烂熟于心。
3. 计算机网络、操作系统和数据库核心内容要熟悉。
4.必须有一门熟悉的编程语言。
5.如果找测试相关的工作,那么需要多付出时间与精力在软件测试上。推荐一本书《软件测试的艺术》。
一点点经验,看到这篇文章的你,希望会对你有用。