秋招差不多结束了,总结一下自己在秋招的辛酸经历。
面经主要是和C++开发相关的,有总结的不好的地方还请大佬轻拍。
问题主要分为以下几个方面:
【C++基础】C++的内存分配方式,代码段、数据段、堆栈段。static、virtual、volatile等关键字的一些用法。C++多态。override 与overload区别。虚拟内存、物理内存区别。构造函数、拷贝构造函数、析构函数等。new、malloc区别(这里有一个面试官给提醒的一个,在C++的类中,new创建的对象是会调用构造函数的...一直没有想起来有这么一个区别。相对的,delete的对象会调用析构函数。new和delete是关键字,malloc和free是库函数)。C++内存泄漏(发生内存泄漏的方式以及处理方法)。
问题中的一些小知识点:static在局部变量、全局变量、类成员变量、类成员函数等中的应用。virtual在类成员函数、析构函数等中的应用,析构函数有无virtual关键字修饰在继承时,会出现什么情况,主要是子类的对象析构时,若父类的析构函数没有virtual 关键字修饰的话,就不会调用父类的析构函数,造成内存释放不干净,存在内存泄漏的风险。volatile关键字主要应用在嵌入式程序的开发中。new和malloc的区别还是比较多的,不详述了。C++内存泄漏是在百度二面的时候问到的,答的很差,只知道用工具软件来处理内存泄漏,并不知道有哪些软件。
【计算机基础】对称加密和非对称加密。http请求中,get和post区别。http请求中,服务器识别不同客户端的方式(通过cookie)。
【数据结构】数据结构是面试中问到最多的,也是最能体现一个人的代码能力的,这一部分被问到的问题比较多,我这里大概总结一下。数组、链表、栈、队列、二叉树、二叉查找树等,STL里面的 list、queue、stack、vector、map等,dfs、wfs,dp,冒泡排序、选择排序、归并排序、快速排序、推排序、希尔排序等排序方式。题目如:判断链表是否有环。判断两个链表是否有重叠。用队列模拟栈。用栈模拟队列。二叉树的前中后序遍历、层次遍历(重在具体问题具体应用)。queue、stack、vector等实现的函数、各自区别,尤其vector的reverse函数和capacity函数。深搜、广搜和动态规划是属于图里面的,是属于难度比较大的。深搜类似二叉树里面的先序遍历,广搜类似层次遍历。
【实现函数库中的函数】实现函数库中的一些函数,如:strcpy、memcpy、memmove,move等。
【网络】tcp协议的建立、断开详细过程。OSI网络7层协议。tcp、udp区别。ARP协议。DNS。上层协议用到tcp或udp的有哪些。
【数据库】我的数据库基本是属于不会的,面试官问我,我都是说不会数据库(⊙o⊙)…,有被问到过数据库的简单增删改查操作。
【操作系统】进程和线程的区别,进程间(线程间)通信方式、调度方式、状态转移等。内存管理方式(首次适应、最差适应、段式、页式、段页式等)。Linux系统的掌握情况,这个就看过私房菜,现在都忘的差不多 了,就记得一些最简单的命令了(如一些常用的命令:cat、tac、top、chmod、ls、mv、cp、rm等)。
【一些面试心得】来看问题的,看到这儿就可以结束了,后面是我面试过程中对自己弱渣的一些吐槽。秋招季开始之前我并没有做准备,也没有像大佬一样在LeetCode上面刷题,我大概就是踩一颗雷补一点知识吧。第一次面试机会是华为的,华为的一面就不想说了,你能想象得到的最渣。然后第一次二面是遇到百度...,说到百度,真是心酸啊→_→,现在百度再给我一次面试的机会,感觉自己肯定可以把握住的!由于华为一面弱渣的表现,自己反思了一些问题,在百度一面的时候表现就比较正常了。奈何不知道二面是啥样的,也就凉在了百度二面,二面中问到的很多问题还是比较简单的,但是我当时都不会...在这之后,我就又查漏补缺,把C++的基础知识基本上都捡起来了。在数据结构方面,我也把stl和二叉树的遍历等加深了一下。网络方面,又重新把tcp的知识捡起来了。数据库的话,因为我一直对数据库的了解比较少,属于不会的那种,也就破罐子破摔了。操作系统方面主要是把进程、线程一块巩固了一下。感觉自己还是距离大佬的水平差距很大。经历了面试的低谷之后,也渐渐的收到了offer,也有公司要我了,我也不会失业了,太激动了。个人没有开发的项目经验,数据库还基本不会(⊙o⊙)…,这大概也是面试中被刷的一个很重要原因吧。能找到工作大概是C++的基础和数据结构掌握的还算可以。
面试中问题的话大概就是这些,具体答案有时间我再补充。
面试经历来自:华为、百度、迅雷、瓜子二手车、太合音乐、网易互娱等。