今天被阿尔卡特电话面试了,第一次接受外企的电面,还是有点紧张的,怕那边提的问题啥都不会,电面前也看了不少的C语言基础问题,下午4点半准时来电了,给我电面的人姓黄,是泛在网/云计算项目组成员,挺和蔼的,属于比较好交流的那种类型,开始他就问我工程实践的事情,问我在里面主要负责哪部分,进度怎样了,什么时候能弄完,然后问我熟悉哪些语言,我说我只对C比较熟悉,以前弄过C51单片机开发过一些项目,都的底层硬件驱动都是C语言写的。他就开始问我C语言的基本知识:
堆和栈的区别?我就说堆是程序自己设置的,可以设置大小,用malloc设置就可以了,sizeof来确定大小即可,栈是由系统分配的内存空间,当你定义了int b后就会系统帮你开辟一个内存空间,即栈。我感觉他在那边点头了,嘿嘿~
C语言中使用const定义变量和一般的定义有什么不同,以及用static呢?我说const定义了一个常量,在系统执行程序时不能被修改的,static则是定义静态变量,在模块中定义的静态变量在函数运行时是不会被修改的,然后他追问道const来定义指针呢,我回答,嗯,那定义的指针一定是常量指针,其指向的地址不会被修改的。
接下来有问了算法上的问题,关于排序的,问我知道哪些排序,以及它们那个快,正好上学期做过算法的实验,我就把实验的结论说了下。
最后对方又问我了字符数组复制的问题,开始我被问蒙了,什么叫给我两个指针,一个指向被复制字符串,另一个指向另一个空字符数组,然后怎样实现字符串的复制?
我想了一会,就开始似懂非懂的找话说,不能冷场啊,我说这个指针指向字符串数组的首字母的地址,要实现复制,中间得设置一个字符串变量吧,然后他看我回答的没有前面的流畅了,就开始启发我,问我在复制时应该注意些什么,我说要注意字符串的大小,结尾到没到“\0”等,还有很关键的一点是首指针不能为空,这个突然让我想起来了上学期嵌入式操作系统做过的一个实验,GDB调试代码时那个问题,首指针不能为null,这个就是问题的关键。
临结束邮件发来一个开放性的题目:
物联网管理平台很重要的一个功能是对于大量终端设备的远程管理以减少人工维护成本。让我们处理一个简单的场景:一个管理平台通过IP方式与1000个传感器终端相连。管理平台中的统计模块(Central Statistics Module)负责收集并统计这些传感器终端的运行情况,比如数据传输量(Packets_transmitted),数据包丢包数(Packets_lost)等等。数据统计包括终端定时上报(比如每15分钟一次)以及管理平台触发两种方式。收到的数据将显示在管理平台的屏幕上并保存进文件以便进一步处理。请针对上述场景
(1)设计并实现该统计模块。
(2)设计并实现终端的响应机制。
如果可能的话,请画出消息交互流程图或其它设计方案。请以你最熟悉的语言来实现程序,你也可以选择以最接近真实编程语言的伪代码来描述。如有必要,你可以做任何合理的假设,但请用文字说明。
我编程肯定是编不出了,时间来不及,给1个半小时,我就说了许多思路。。。。就这样吧,看运气了,后面能有机会去面试那就更好了~!