至于在今年秋招那么严峻的情况下,我一个双非本科还能免笔试直接进入面试环节,我其实也是糊里糊涂的。故事是这么来的,小明在BOSS直聘上投简历,然后一个陌生的HR找到了小明,问小明对对测试开发岗有兴趣吗,小明一看,毕竟是字节啊!果断将自己的简历发了过去。晚上就惊喜的收到了字节面试邀请的电话和邮件,开心了一晚上没睡着!
巴拉巴拉一大堆有的没的,说说自己在学校写了啥代码、获得了啥奖、有没有得过奖学金之类的,
可能是我没有项目、比赛的奖项也不是ACM那种含金量高的,所以面试官就没有问我关于简历的内容,
就直接开始问我问题了。
当时脑抽,只记起来extern C,还是第一个问题,面试官就一脸茫然。
全局变量在外部使用声明时,extern关键词是必须的,如果变量无extern修饰且没有显式的初始化,同样成为变量的定义,因此此时必须加extern,而编译器在此标记存储空间在执行时加载如内存并初始化为0。
extern “C” 既可以修饰一句 C++ 代码,也可以修饰一段 C++ 代码,它的功能是让编译器以处理 C 语言代码的方式来处理修饰的 C++ 代码。
面试的时候只讲了个大概,很多细节当时脑袋瓜子嗡嗡的没说出来。
静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。
静态全局变量不能被其它文件所用;
其它文件中可以定义相同名字的变量,不会发生冲突;
该变量在全局数据区分配内存;
静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;
静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;
它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。
静态函数不能被其它文件所用;
其它文件中可以定义相同名字的函数,不会发生冲突;
静态数据成员和普通数据成员一样遵从public,protected,private访问规则;
因为静态数据成员在全局数据区分配内存,属于本类的所有对象共享,所以,它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它;
出现在类体外的函数定义不能指定关键字static;
静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;
非静态成员函数可以任意地访问静态成员函数和静态数据成员;
静态成员函数不能访问非静态成员函数和非静态数据成员;
由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;
他居然没问智能指针、右值引用、对象
讲了一下继承的public、proteed、private、多继承、菱形继承
从虚函数扯到了多态的定义,再到多态的动静态,再到虚表。
直接口述了一下七层模型的内容,最顶上的一层的名字一时没想起来。
其实他问的是tcp/ip协议是什么,然后恰好我中午看了tcp和udp的区别,我就和面试管说我知道这个,然后他就让我答了一下好,还是说了4到5点内容的。
直接说的没学,所以就跳过了
同上。
讲了一下进程和程序的区别,PCB(pcb里进程的状态当时忘记讲了,面试结束了才想起来),进程的调度算法的名字,上下文切换。
恰好学到了匿名管道,就只讲了匿名管道相关,然后列举了其他通信的名字如消息队列。
直接说的没学,所以就跳过了
讲了一下学了select、insert、delete,但他对这些好像并不感兴趣。
直接说的没学,所以就跳过了
面试前几天才看了这个,但紧张的让我忘了,只讲出来测试结果正确相关。
经典黑盒白盒、单元、集成、系统
说了一下两者的定义,还好中午看了点,但没完全记住
简单说了下我自己根据字面意思的理解
用那个场景举了一些例子,大概率等同于瞎编,毕竟没接触过
很久之前看过,但忘了,好歹面试时想出来了。
我是这么说的:
先给5L的杯子装满,然后倒入6L,两个杯子同时放水,这样5L里就有1L,再把6L倒空,在同时放水,6L就有4L,
再把5倒空,同时放水,5L里就有2L,再把6L倒空,同时放水,这样当5L满时,6L里就恰好3L。
我以为我答的很不错,面试官来了句只有一个水龙头,你再好好想想。
然后我脑子又抽了,说把5L杯子放到6L里,当6L满把5L拿出来,重复三次,一听完,面试官就笑了,委婉的说了一下(真实意思:你脑洞真够大的)。
面试结束我才反应过来,什么同时放水,改一下放水顺序不就OK了吗,整个面试,我最大的遗憾!!!
当时的思路是直接sort()然后遍历记录len然后更新max,就直接写了,毕竟之前没做过
面试官:当前算法的时间复杂度是多少呢
我:忽略排序的话是O(N),
面试官:那到底是多少
我:O(N*LOG N)+ O(N),然后取最大
面试官:有没有O(N)的算法呢?
想了一下没出来
面试官:优化时间复杂度的方法有哪些
我:减少循环次数和层数
面试官:其实还有空间换时间
我:对对对。
面试官:你在想一想
其实我想到了哈希,去找-1的和+1的
他又问:什么可以减少比较次数
我直接蒙了。
最后哈希没搞出来,面试就结束了
我问了下base,然后交流了下家里蹲大学的学习心得。[笑哭]
这次面试可以说是我的第一次正式面试,面了一小时十五分钟,就当涨经验了。
但愿能过(满怀希望,虽然不大),过了我能开心的睡不着的!