设为首页 加入收藏

TOP

30卫士通Linux C面试笔试题(收录)
2014-10-19 15:53:30 来源: 作者: 【 】 浏览:66
Tags:卫士 Linux 面试 试题 收录


试题一:用C语言C++语言实现行程压缩的压缩


关于行程压缩:如原文为”111AAKKKK”,则压缩后为”13A2K4″,即用代码和代码重复的次数来表示原始信息,实现一个简单的压缩功能。


void decoder(char * dest, char * src) {


int _num=0;


while( *src != ‘\0′) {


_num =*(src+1) – 0×30;


memset(dest, *src, _num);


dest+=_num;


src+=2;


}


}


以上函数有以下假设:


1. dest与src指针均不为NULL


2. dest的存储空间足够大



####################


以下A\B组试题任选一组:


A组:


试题二:简述一下ping命令在协议层面的操作过程(涉及哪些二层及以上协议以及相关协议对ping的简单的处理过程),并说出在直接配置路由和配置缺省网关这两种情况下,ping在协议层面操作过程有什么不同?



试题三:以TCP为例,简述一下C\S程序设计的原理和实现过程。



试题四:简述一下TCP连接建立时三次握手的过程。



B组:


试题二:简述一下Linux操作系统中断处理的原理和使用方法。



试题三:简述一下Linux操作系统内核的SOFTIRQ和TASKIET的原理和使用方法。



试题四:简述一下以下Linux操作系统内核调用函数的用途。


module_init;


—- 声明模块的初始化函数



register_chrdev_region;


—- 向内核注册字符设备,应该



copy_from_user;


—- 从用户空间向内核空间复制数据



create_proc_entry;


—- 创建/proc文件



wait_event_interruptible_timeeout(queue, condition, timeout);


—- 把当前进程放入queue指定的休眠队列,当condition满足或timeout时间到,则当前进程被唤醒,此进程的休眠状态可被中断



wake_up_interruptible;


—- 唤配在休眠队列中的,可被中断的进程



以上A\B组试题任选一组


#####################



试题五:请指出以下函数存在的两个漏洞并指出其危害:



void str_show(const char* showstr)


{


char* echostr;


echostr=malloc(100);


if(echostr==NULL)


return;


strcpy(echostr,showstr);


printf(“just test!%s\n”,echostr);


}


(1)、未检查字符串指针参数


(2)、strcpy()函数存在越界风险


(3)、printf()存在越界风险




试题六:请描述一下FIFO、栈、二叉平衡树、堆这几种数据结构的构造与基本操作。



试题七:请至少列举三种排序算法并简单描述其排序过程。



试题八:请简要说明下列声明的意义:


int (*f) (int x, int y) func (int*p1, int x, char* (*fp) (int i));


声明一个函数func, 它接受三个参数:一个整型变量地址、一个整型变量和一个回调函数(接受一个整型参数,返回字符串指针), 返回一个函数指针(接受两个整型参数,返回整型值)。


试题九:阅读下面的程序并写出程序执行结果:



#include


int f (int n)


{


return ++n;


}


int g (int *n)


{


return ++*n;


}


main ()


{


int n=10;


int k=0;


k=f (n)


printf (“k is: %d\n”, k);


printf (“n is: %d\n”, n);


k=g (&n);


printf (“k is: %d\n”, k++);


printf (“n is: %d\n”, n++);


}



请说出其运行结果: 10, 11, 11, 11



试题十:阅读下面的程序并写出程序执行结果:



#include


class Display


{


public:


virtual int ShowIt (int num) {printf (“%d\n”, num); return 0;}


int ShowIt (double num) {printf (“%1f\n”, num); return 0;}


};


class DisplayEx: public Disply


{


pulic:


int ShowIt (int num) {printf (“It is Integer, value is %d\n”, num); return 0;}


};


int main ()


{


DisplayEx dpex;


Display *p_base=&dpex;



p_base->ShowIt (168);


p_base->ShowIt (1.68);


dpex.ShowIt (“Hello, World\n”);


dpex.ShowIt (1.69);


dpex.Display::ShowIt (1.69);


return 0;


}



请说出其运行结果



It is Integer, value is 168



1.680000



It is string, value is Hello, World




It is Integer, value is 1



1.690000



题有错,应该为


#include



class Display{


public:


virtual int ShowIt (int num) {


printf (“%d\n”, num);


return 0;


}


int ShowIt (double num) {printf (“%1f\n”, num); return 0;}


};



class DisplayEx: public Display {


public:


int ShowIt (int num) {printf (“It is Integer, value is %d\n”, num); return 0;}


int ShowIt (char * msg) {printf (“It is string, value is %s\n”, msg); return 0;}


};



int main (int argc, char ** argv)


{


DisplayEx dpex;


Display *p_base=&dpex;



p_base->ShowIt (168);


p_base->ShowIt (1.68);



dpex.ShowIt (“Hello, World\n”);


dpex.ShowIt (1.69);


dpex.Display::ShowIt (1.69);



return 0;


}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇大数据面试题:数据分析师面试常.. 下一篇linux面试题 包括linux系统操作及..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: