秋招笔试、面试随感

从九月初打完省赛回学校开始,校招正式批拉开序幕,几乎天天都有笔试题,每天在学校就是做笔试,看面经,复习知识点。个人的方向是后台开发,使用的语言是Java/C++都可以,但更偏向于Java。因为学得可能更多一点吧。

说说笔试题,大概就是20道单选题,10道多选题,2到3道编程题。难易程度各异,但涉及到的知识点大概就是计算机基础知识(数据结构、操作系统、计算机网络、数据库),以及语言特性(C++/Java),在编程题上一般是一些简单的题目(模拟、DFS、数学、贪心)

笔试题一般呢没什么好说的,毕竟各个公司的题目在牛客网上都有,大家可以自己去练习。

对于面试,可能个人觉得这是一件非常非常值得重视的一件事情吧。

个人面试的先列举一下(按时间先后顺序):

比较大的公司:

阿里(提前批一面   电话)
网易(提前批一面   现场)
头条(正式批一面   视频)
小米(提前批二面  视频)
腾讯(霸面一面  现场)
迅雷(正式批二面  现场)
新浪(实习生一面  电话)

一些不出名的小公司:

    二维火(三面   现场)
    实在智能(一面  电话)
    数睿科技(一面  电话)
    扬讯科技(一面  视频)

先说说大公司的面试。大公司的面试一般不会问很多,五六个知识点即可,然后必问的就是一道算法题。这个由于投的岗位不同,以及面试官偏向的工作方向不同,会使得问的东西也有所不同。

下面我仔细举几个例子讲讲吧

一般来说,对Java这一块,基础一点的会问问JVM的结构、GC回收机制、并发引起的问题、内存泄漏的问题、几种异常产生的原因以及集合中的一些容器比较等等,框架的话会问问Spring的AOP和IOC机制、Bean的生命周期以及Spring中使用的代理的方法、使用了什么设计模式、Hibernate的二级缓存、MyBatis逆向工程以及#和$的区别、SpringMVC的整个流程、常用注解以及前后端参数传输的问题;

对C++这一块,因为我投的也不多,经历不是很足,涉及到的问题也就是Vector扩容、虚函数、虚函数表、内存管理等等;

在数据库方面,基础一点的会问到ACID、索引、四种隔离级别以及不设置隔离级别会发生的四种问题、三个范式、两种引擎、悲观锁和乐观锁等等,若要深入的话会问问索引的内部结构中B+和B树的区别、两种索引存放的位置、Innodb和MyIASM的比较、数据库优化的几种方式以及X锁和S锁等等;

在计算机网络方面,基础一点的就是TCP和UDP的区别、三次握手、四次挥手、HTTP和HTTPS的区别、GET和POST的区别等等,深入问的话就会问一下HTTPS如何提高效率、拥塞控制、滑动窗口、DNS域名解析、在网址上输入www.baidu.com会发生什么等等;

在操作系统方面,没有问的很深,主要是知识点比较散,需要多看书多积累,和你的擅长的语言结合起来问,比如说问线程和进程的区别、线程之间的通信方式、进程之间的通信方式、手写一个死锁、在Java中线程从启动到终止的状态图、sleep和wait的区别、可重入锁和synchronized、阻塞非阻塞和同步非同步的问题、为了让线程安全单例模式中懒汉式应该如何改写、volatile关键字等等

然后就是数据结构方面的了,如果说前面的一些可以平时通过短时间恶补暂且能回答上来一些的话,那么在数据结构这里是行不通的。一般来说,大公司问的数据结构是必须要你手撕代码的,比如会问红黑树的增和删、手写一个平衡二叉树、手写dfs递归判断是否是平衡二叉树、手写普通树的层次遍历、手写大顶堆、说一说快速排序和归并排序的思想、写一个图的bfs等等

在算法题上面,因为我简历上多一些ACM经历,而且没有项目内容可以唠嗑,所以可能在做算法上面问的比较多吧。像我碰到过的算法题,我可以简单描述一些,如下:

1、二分查找的过程中,如果数组中存在多个相同的数据,在查找函数中返回第一个位置和最后一个位置代码上有什么不同;

2、一个人一次可以走一步,也可以走两步,走到n(大数)阶可以有多少种方法,答案对1e9+10取膜;

3、从一组很大的数据中,找出那个出现次数超过一半以上的数;

4、一个人一次最少走n步,最多走m步,走到k阶可以有多少种方法;

5、一个n*m大小的图,限制1000*1000,从任意一个指定的点(x,y)出发找到最长递减序列,如果可以,请写出任意一种序列的答案;

6、一个容器为x个单位的杯子和y个单位的杯子,要取K单位的水,写出倒的过程;

7、12个球其中有1个质量不同,最多称几次可以找到那个球,并且判断是轻了还是重了;

最后的话,还有些公司喜欢问场景题目,比如说:

1、10GB的数据如何从你的电脑上传到服务器上,支持断点续传;

2、从两个不同数据库上面抽取两个表的相同字段,字段已经排好序了,抽取合并前20的数据,SQL语句如何写;

暂时记得的就这么多了。

感触:这一个月的笔试面试,对我最大的感触就是,感觉好像知道了自己很多的不足。像我们平时在大学里面的课堂上讲的计算机方方面面的基础知识,其实是很重要的,需要重新拿出来好好打好基础。其实在做开发的时候,更多的不是写代码,而是看代码,看书,交流沟通。

怎么说呢,其实每一次大公司面试官面完我之后,都会有大概十几分钟的扯淡,而这些一针见血地评价你的扯淡,可能恰恰就是你以后行路的方向灯;

学无止境,有了基础,才能提升。

基础的积累,真的是需要靠一点一点的学习时间去用功的;

加油吧,最后祝大家早日找到好工作(PS:虽然我现在还没有找到工作,但是感觉好像心里也不那么急了,感觉像我这种人头铁能去参加这么多面试,已经很幸运了,不敢再奢求更多)

你可能感兴趣的:(成长心得)