2017CVTE笔试题

下面是凭记忆整理的2017CVTE校招笔试题,基本上全都是我不会或很模糊的题,为了更好突出重点我以问答题的形式来描述题目。

1. 中序遍历是属于层次遍历、广度优先遍历、深度优先遍历中的哪一种?

 答:层次遍历是指一层一层的遍历树中的节点,广度优先遍历是指遍历完它所有的兄弟节点后再开始遍历其孩子节点,因此层次遍历也属于广度优先遍历。深度优先遍历就是顺着节点的孩子节点一直往下搜索,直到没有孩子节点时才开始搜索叶子节点,常见的前序遍历、中序遍历、后序遍历就是属于深度优先遍历。

2. 产生死锁的4个条件,解决死锁的方法?

 答:产生死锁的的4个必要条件,发生死锁时这4个条件必然成立,只要有一个不成立将不会产生死锁。

  (1)互斥条件,一个资源一次只能被一个进程使用。

  (2)请求与保持条件,一个进程在申请新的资源的同时保持对原资源的占有,部分分配,占有申请。

  (3)不剥夺资源,也就是不可强占资源,资源只能由占有者自动释放。

  (4)循环等待,进程之间相互等待。

    对于死锁一般可从以下3个角度来处理:死锁检测与恢复、死锁预防、死锁避免。

3. UDP伪首部的作用、长度、有无端口号、传递方向?

 答:UDP伪首部的核心作用是检查数据报是否正确的到达目的地,依据是IP和校验和,也就是说会检查2次验证。

   UDP伪首部一共12个字节,8字节源、目的IP,一字节保留一字节协议,2字节的UDP长度。UDP首部为8字节,4字节源、目的端口号,2字节长度(总长度),2字节校验和。

   从首部介绍可知道端口号并不存在于伪首部中,只存在于UDP首部中,TCP中也是12字节的伪首部。

     题目是说UDP伪首部的传递方向是向下的,伪首部并不作为树据的一部分,所以这个选项我觉得是错误的。

4. 用于Linux内核配置的命令以下哪些是正确的:make config、make oldconfig、make menuconfig、make xconfig?

 答:以上4种都是。config是最为传统的一种配置方式,不推荐使用。oldconfig是在旧的.config的基础上生成新的.config文件,如果需要在原有文件上做一些小修改使用它很方便。menuconfig则是基于字符终端配置模式,xconfig则是基于图形窗体配置模式,适用于Xwindow。

5. 在编译内核时可对驱动模块进行剪裁吗?驱动程序只能运行在内核态吗?

 答:关于Linux我没有深入学习过,请教了身边一位学Linux的同学,他也不懂很本质的内容,但是知道在编译内核时是可以对驱动模块进行裁剪的。用户程序运行在用户态,系统代码运行在内核态,但有时候用户程序需要一些特权指令,比如访问硬件,此时就需要驱动程序了,我百度的结果是驱动程序运行在内核态。

6. Linux中bootloader是什么?

 答:bootloader是一个引导加载程序,当系统通电后运行的第一段程序就是它。接下来它会完成系统的初始化任务并在完成后装载内核到ram中,最后跳转到内核的第一条指令继续执行,这样就启动了Linux内核。

7. 预处理阶段会对宏定义值进行计算吗?#define SQUARS(x) ((x)*(x))宏展开时都是求x的平方?

 答:预处理阶段仅仅只是简单的字符替换,不会进行计算。第二个问题是错的,因为存在x++和++x的情况,此时就不再是x的平方了。下面是非常经典的gcc的编译过程图。

8. 什么是大端模式和小端模式?原题大概是:一个数0x1234567,存放在0x2001~0x2004,32位主机且在大端模式下0x2002存放的数是多少?

 答:大端模式是指将数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中。

   小端模式是指将数据的低字节,保存在内存的低地址中,而数据的高字节,保存在内存的高地址中。

   大端模式下0x2002存放的数为0x23。

9. 有一个数组a[4][3],下面哪些可表示a[1][1]:*(a[1]+1), *(&a[0][0]+4), *(&a[1]+1), *(*(a+1)+1)?

 答:我做这个题最大的盲点就是对于本身还是数组元素的指针,比如a[1], 它加1是指得到a[1][1]呢,还是得到a[2]。这里我还是请教的那个搞Linux c的同学,他的意思是如果此时指针本身还是指向了一个数组,那么当进行加1操作时系统会进行一个判断,此时加1将是加一行数据,也就是a[1]+1将得到a[2]。如果此时指针直接指向了普通的数组元素,那么a[1][1]+1将得到a[1][2]。到这里你应该知道答案了。

10. 下面哪些声明方式中ptr指向的值不能改变:int const *ptr, int* const ptr, const int* ptr?(这个题目本质是关于指针常量和常量指针的理解)

 答:指针常量,它是常量,只是指针本身就是常量。这样指针本身不可改变,但是它指向的地址表示的值是可以改变的。指针常量在定义的时候必须赋初值。

   常量指针,它是指针,只是指针指向的是常量。这样指针本身是可以改变的,可以将指针重新指向新的值,但是指针指向的地址所代表的值不能改变。

   const在*前就是常量指针,const在*后就是指针常量,还有一个小技巧,const后是什么那什么就不能改变,如const* a中*a不能改变,*const a中a不能改变。

   使用指针常量有2个优点:可靠性,指针不可修改且不能赋为NULL;不再需要判断指针是否为空的情况,因为指针将在定义时初始化且不可修改。

void main()
{
    int a=6;
    const int m=5;
    int* n;
    //定义指针常量,指针常量在定义时必须赋初值,因为在其它地方将无法修改b,所以只能在定义时就初始化
    int* const b=&a;
    //定义常量指针
    int const* c;

    *b=8;               //此时可对指针指向的值作修改
    printf("%d",*b);    //输出8
    //b=NULL;           //不能修改b,即使是将b指向NULL
    c=&a;
    //*c=3;             //会报错,不能使用指针修改它所指向的地址里的值
    //n=&m;             //还有一点要注意,这里n=&m将会报错,因为n消除了m的const属性。也就是说不能将常量的地址暴露出去。
    //当程序跑起来之后这种常量会被分配到一个只读的内存页当中,若检测到有数据回写到这个内存会引发操作系统异常处理的
}

11. MMU(内存管理单元)的作用?

  答:对这方面我没深入过,下面是百度的很抽象的作用。MMU主要作用是将虚拟地址映射为物理地址,并设置内存访问权限。没有启动MMU时cpu、catch和外设等所有部件使用的都是物理地址,当启用MMU后此时cpu将发出虚拟地址,然后根据虚拟地址与物理地址的映射关系来将虚拟地址转换为物理地址。

12. Linux中grep、sed指令是什么意思?

  答:题目中是考了一个Linux下的正则表达式,大概是grep "^[0-9].*CVTE" test.txt | sed s/CVTE/cvte,表达式的意思是找出以0~9开头并以CVTE结尾的字符串,最后将大写的CVTE替换为cvte。关于grep和sed指令有一篇文章写得很好blog.csdn.net/y990041769/article/details/47167109

上面是我自己百度总结的,如有错误请指出。

时间: 2024-08-24 04:14:16

2017CVTE笔试题的相关文章

【转】嵌入式软件工程师经典笔试题

嵌入式软件工程师经典笔试题 > 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中 有多少秒而不是计算出实际的值,是更清晰而没有代价的. 3).

腾讯web前端开发工程师笔试题及答案

1. 如何实现事件委托? 首先要知道什么是事件委托. 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(当然只是一个解释,实际工作中很少遇到这么多li的情况),为每个li添加事件侦听就会对页面性能产生很大的影响. 就像下面这段代码: <!DOCTYPE HTML><html><head><meta charset="utf-8" /><ti

ThoughtWorks笔试题之Merchant&#39;s Guide To The Galaxy解析

一.背景 在某网站上看到ThoughtWorks在武汉招人,待遇在本地还算不错,就投递了简历.第二天HR就打开电话,基本了解了一下情况(工作环境不错,男人妹子比例:1:1,双休,六险一金,满一年年假15天,病假8天,月薪1W--2W).然后立马收到一封:Coding Assignment的笔试题目.网上搜索了一下,发现这个公司还是挺大的,公司面试流程是出了名的繁杂和苛刻.据说有8轮:电话面试=>笔试=>Homework=>结对编程(中午管饭)=>技术面试=>PM面试=>

java各公司笔试题集1

IBM笔试题 注:IBM笔试题一小时之内完成,题目全部用英文描述,这里用中文表述 一.名词解释 1.Eclipse 2.J2EE 3.EJB 4.Ajax 5.Web service 二.找出以下代码问题 public class test{ public void print(String str){ char[] s=str: } } public class a{ public static void main(String [] args){ puts() } } 三.写出以下输出 pu

腾讯笔试题:满二叉排序树,任给3个子节点,找他们最大的公共父节点

腾讯笔试题出现了和这个类似的题目,没做出来,现在来好好解决这个问题吧,先从基本的开始. 先吐槽一下:感觉算法设计什么的,真的超级难,也许是我头脑太笨,转不过弯来吧,呵呵. 题目是这样的:一棵满二叉排序树,有K层,节点的值依次为 1~2k-1.现在告诉你树的高度是4层,给定你3个节点,比如9,11, 13,那么最大的公共父节点是12. 现在想起来这题我已经想出来一半了呀,但是大概人在紧张的时候大脑会思维短路,跳不出原有的思维陷阱.想法是这样的: 1. 首先是从根节点开始,如果给的三个叶节点的值其中

c++笔试题贪吃蛇问题

贪吃蛇 现在有一个N*M(N,M=100)的方形矩形,在这个矩形的每一个方格上都放有一个随机值,一条可爱的小蛇从矩形的 左上角开始出发,每次移动都只能移动一格,向右或向下,而每到达一格贪吃的小蛇都会吧该位置上的值吃个一干二净,直到到达右下角时停止.而贪吃的小蛇不怕撑死,它只想吃到最多,并输出路径. #include <iostream> #include<string> #include <cstring> #include<vector> #include

多线程关于腾讯笔试题

今天在头条上看到一道据说是腾讯的笔试题,闲来无事,准备验证一下! 题目如下: 有一个变量int a=0:两个线程同时进行+1操作,每个线程加100次,不加锁,最后a的值是()? 根据我的理解答案不唯一,最大是两百,最小是2吧.直接上代码: class MyThread implements Runnable { static volatile long i = 0; public void run() { for (int m = 0; m < 100; m++) { i++; } } }; p

DP - 2016网易杭研笔试题A

2016网易杭研笔试题A Problem's Link ---------------------------------------------------------------------------- Mean: 有一个边长为n的立方体,内部的每一个小立方体内有一个数字.如果取了当前这个小立方体,则小立方体的: 1.上下相邻两层将会消失; 2.前后相邻两列将会消失; 3.左右相邻两个将会消失; 找出一种取法,使得取到的数的sum最大,输出sum. analyse: 现场面试时挂在这题上了

&lt;转&gt;网易2016实习生前端笔试题部分总结

网易2016实习生前端笔试题部分总结 原文地址:http://www.cnblogs.com/venoral/p/5325202.html 这只是部分题,答案为个人观点如有错误欢迎指出,感觉考点都挺基础,但是很注重考细节方面,通过整理也知道自己在CSS3和HTML5,网络知识等方面的不足还是得多学多练多思考.攒rp,希望自己在明天360笔试中能轻松答过~ css 1.多选 //HTML <p>很长的一段文字,很长的一段文字,很长的一段文字,特别长的文字</p> //CSS p{ w