师姐的建议我写写面试笔试总结,觉得这个建议不错,既可以回顾过去的面试经历,又可以给有需要的人看,还可以从回顾经历的事中得到更多的心得。
首先总结一下笔试考点吧,经过我多次笔试被刷的经历(T T)说出来都是泪啊。
1、#define 仅仅只执行替换功能,eg:#define f (a, b) a + b 2 * f(1 , 2)结果是4而不是6
2、看到switch语句,考点基本都是case后面没加break
3、new 和malloc,delete 和 free的区别,首先分别介绍他们的功能(这个网上很多,读者直接查),malloc和free是函数而new 和 delect是关键字, new delect出了开辟与释放空间还会调用类的构造函数与析构函数,而malloc free不会, new能带初值,malloc不可以
4、父类与子类的构造顺序与析构顺序问题,多肽问题(注意父类函数是否是虚函数,父类是虚函数,则子类的重写方法就算不写virtual也是虚函数)
5、tcp三次握手4次断开,假如其中一次没有收到,会怎么处理,谁进行重发。tcp传输实现、流量控制(滑动窗口)、拥塞控制
6、静态变量:只初始化一次,下次再进入函数不再初始化,默认初始化为0
7、计算机网络7层架构,问一些典型的协议处在那一层:数据链路层(ppp/CSMA/CD),网络层(IP,ARP,RARP,ICMPIGMP),运输层(UDP,TCP),应用层(DNS,FTP,WWW,TFTP,SMTP, IMAP,POP3,DHCP)
8、分别讲介绍一下TCP UDP
9、进程线程同步与互斥:互斥量,信号量、临界区、事件
10、死锁的原因和必要条件
11、页面置换算法:FIFO,LRU
12、几种基本的排序与查找算法
13、链表的各种操作
14、两条相交链表,求找出相交节点
15、判断链表是否有环
16、引用与指针的区别
17、满二叉树的几条公式
18、桟、队列的实现
19、变量的存储区(静态存储区又叫数据区,堆区,桟区)
20、给两条有序链表,合并为一条有序链表(要求用普通方法与递归方法)
以下是我笔试华软的几道上机题,大致记得如下:
一、给个10进制数字转换为2进制与16进制
二、字符串查找,我当时为了突出自己就写了个KMP,如果你使用普通的查找算法难以给考官留下印象
三、实现一条有序链表的插入与删除函数(链表中的数据保持有序)
四、txt文件中保存一张表,读取与输出表的内容,并提供根据不同的列进行排序的函数
第四题当时卡了很久,跟考官交流过后才找到方法。主要难点在第二个排序函数,因为要根据提供的列参数对数据进行排序,一开始没想通怎么表示根据代表列的字符串获取该列对应的值,然后进行比较与排序。事实上只要借助map就行了,将列与该列的值关联起来,结构如下map<string, int>
structt line//一行的数据
{
map<string, int> im;//列与数据类型为int的值关联(注意map是个容器,能存储多个string,当时居然忽略了这点)
map<string, string> sm;
};
笔试完后给考官感觉还是不错,面试官也根据我的程序提出了一些问题,也都一一作了解答,有幸拿到了终面。
一开始老总先让我做自我介绍,我就blabla介绍了一下,然后让我介绍简历里面的一个项目,之后就是聊一些有的没的。最后问我预期工资填6000是怎么定的,我当时对软件工程师的工资水平还不是很清楚,所以就吹说有跟师兄交流了解过,老总有问我最低能接受多少的工资,我心想难道我开高了,就说最低5500,老总很开心的说现在给你5800,接不接受。话都说出去了,只好说能接受(本来打算就是过来练手的,对加入公司意愿不大),再问福利方面,除了国家规定福利,外加一年两次旅游,最重要的是不包吃住,在广州不包吃住5800真的有点低了。
回到学校后,问过周围的同学跟师姐,也都说工资是低了点,技术能力差的才5k多,技术稍微好点的通常7k左右,技术牛的月薪接近1w。现在学精了,以后终面要先了解应聘职位的平均工资水平与该公司能给的上限,再结合自己的个人能力等实际情况提出预期工资