华为面试linux命令 linux面试会问什么

华为面试题:怎样判断栈的增长方向

华为面试题:怎样判断栈的增长方向

成都创新互联专业IDC数据服务器托管提供商,专业提供成都服务器托管,服务器租用,服务器托管服务器托管,成都多线服务器托管等服务器托管服务。

在华为面试中有这么一道考试,请给出栈增长方向的判断方法。下面一起来看看这道题的参考答案,仅供大家参考!

该题目属于考查计算机组成原理中栈结构知识的题目。其参考答案如下:

可以编写一个带有过程(函数)调用的C程序,然后按照以下方法进行判断(采用类似思想,还可以写出许多答案)。

方法一:通过比较被调用过程中的入口参数所在地址和局部变量所在地址之间的大小来判断。若入口参数所在地址大于局部变量所在地址,则栈是向低地址增长的。

方法二:直接阅读汇编指令来判断。例如,在IA-32中,如果在一个过程的开始阶段(准备段)出现类似“sub $0x10,%esp”指令,说明栈顶指针(%esp)是变小的,因此栈是向低地址增长的。

方法三:显示栈顶指针寄存器的内容。在某个过程的开始阶段和结束阶段分别显示栈顶指针寄存器的内容,比较它们的大小。若开始处的值比结束处的大,则说明栈是向低地址增长的。

后面两种方法,需要对程序的机器级代码(汇编指令)进行调试,例如,利用Linux系统中的程序调试工具软件GDB进行调试。

该题是开放题目,答案应该没有唯一性。通过这个题目的回答可以考查出学生对计算机系统中栈结构的掌握情况。

栈是存储空间中的一个区域,分用户栈和内核栈两种类型。用户栈主要用来存放用户进程每次过程(函数)调用时,在被调用过程中使用的局部信息,每次过程调用都在栈中生长出一个新的栈帧,因此,栈帧是通过执行相应的指令动态生长出来的;内核栈是操作系统内核中的动态存储区域,用于保存操作系统内核和硬件所需要的动态信息。

在采用虚拟存储管理机制的系统中,内核栈和用户栈都是虚拟地址空间中的一个存储区。每个源程序经编译、汇编、链接等处理生成可执行的二进制机器目标代码时,每个程序的目标代码都被映射到同样的虚拟地址空间,所有用户进程的虚拟地址空间是一致的。例如,图1给出了在IA32/Linux操作系统下hello程序的一个进程对应的虚拟地址空间映像。它分为两大部分:内核区(kernelarea)和用户区(userarea)。

从图1可以看出,内核区在0xC0000000以上的高端地址上,用来存放操作系统内核代码和数据以及与每个进程相关的数据结构(如进程标识信息、进程现场信息、页表等进程控制信息以及内核栈等),其中内核代码和数据区在每个进程的地址空间中都相同。用户程序没有权限访问内核区。

用户区用来存放用户进程的代码和数据,它被分为以下几个区域。

(1) 用户栈。用来存放程序运行时过程调用的参数、返回值、返回地址、过程局部变量等,随着程序的执行,该区会不断动态地从高地址向低地址增长或向反方向减退。

(2) 共享库。用来存放公共的共享函数库代码,如hello中的printf( )函数等。

(3) 堆。用于动态申请存储区,例如,C语言中用malloc()函数分配的存储区,或C++中用new操作符分配的存储区。申请一块内存时,动态地从低地址向高地址增长,用free( )函数或delete操作符释放一块内存时,动态地从高地址向低地址减退。

(4) 可读写数据区。存放用户进程中的静态全局变量,堆区从该区域的结尾处开始向高地址增长。

(5) 只读数据和代码区。存放用户进程中的代码和只读数据,如hello进程中的程序代码和字符串“hello,world\n”。

每个区域都有相应的'起始位置,堆区和栈区相向生长,栈区从内核起始位置0xC0000000开始向低地址增长,堆栈中的共享库代码区从0x40000000开始向高地址增长。代码和只读数据区从0x08048000开始向高地址增长。

对于栈的访问操作,有些指令集系统结构提供了专门的入栈和出栈指令,例如Intel架构中的push指令和pop指令分别用于入栈和出栈操作;有些架构则不提供专门的入栈和出栈指令,而是通过访存指令和加/减指令来实现入栈和出栈操作,例如,MIPS架构中用sw指令和add或sub指令实现入栈操作,用lw指令和add或sub指令实现出栈操作。

对于像Intel这样提供专门入栈和出栈指令的情况,栈的增长方向可以根据入栈、出栈指令的功能来确定,例如,IA-31架构中的push指令自动将栈顶指针减4,而pop指令则自动将栈顶指针加4。因而,栈总是从高地址向低地址增长。

对于像MIPS架构这种没有专门入栈和出栈指令的情况,栈的增长方向就不一定,可能是高地址向低地址增长,或是相反。

因为栈是通过执行指令动态增长的,所以,最直接的判断办法就是在机器级代码层面(通常是汇编指令)来阅读或调试程序。

当一个过程P调用一个被调用过程Q,则P中传递给Q的参数会先入栈,然后执行调用指令(如IA-32中的call指令),跳转到Q执行,在被调用过程Q中,再将Q的局部变量入栈,因此,通过比较Q过程的入口参数所在地址和局部变量所在地址之间的大小,可以判断出栈的增长方向。

linux 新建文件命令

有以下四个方法

1、使用vi命令新建文件;

写法:vi text.txt(文件夹名字)

2、使用touch命令新建文件;

写法:touch text.txt(文件夹名字)

3、使用cp命令新建文件;

写法:cp text.txt(文件夹名字) /home/pungki/office(文件放置位置)

4、使用mv命令新建文件;

写法:mv text.txt(文件夹名字) /home/pungki/office(文件放置位置)

扩展资料:

其它常用命令

1、cd命令

它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。

2、ls命令

这是一个非常有用的查看文件与目录的命令。

3、grep命令

该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等。

4、find命令

find是一个基于查找的功能非常强大的命令。

华为测试工程师面试:面试官很好,没有什么压力

第一个问题:自我介绍(心理学首因效应告诉我们第一印象非常重要),自我介绍最重要的是能够在面试官心目中留下一个好的第一感觉。说得更直白一点是让面试官舒服。但是我发现很多人就是直接简单的介绍了一下过去的经历,但是实际上一方面过去的经历没有很好的让人发现优点。其实面试好比相亲,你想说什么不重要,重要地是人家想听什么。比较好的自我介绍套路是这样:“您好,我叫XXX,很高兴能获得这次面试机会,今天来面试是想证明自己是最合适的人选,另一个方面是获得您的认可,结合我过去的工作和学习经历,我自信我能符合咱们公司的认可,接下来您看是我继续介绍我做过的项目,还是您问您关心的问题?”

第二个问题:项目介绍(项目经验直接决定一个人能否胜任一份工作,企业更应该看重一个人解决问题的思路和具体能力),项目介绍部分最重要的思路是应该先整体后局部,介绍整体的时候要有量化的数据(从项目度量的五大维度:规模,包括项目代码规模,需求规模、用例规模,工作量,进度,质量和成本),然后是整体的测试流程,然后再是角色与职责,接下来是项目中自己的特色,比如做得最好的是、遇到最大的困难时、最差的是,最后是心得体会。

第三类问题:数据库方面知识,最基本的要求是数据库记录的增删改查(insert、delete、update、select),表结构的增删改查(create、drop、alter、describe)、存储过程、触发器等。

第四类问题:linux操作系统相关,最基本的目标是熟悉常见的50个命令,比如find命令(-name、-type、-perm、-user、-group、-ctime、-atime)等,熟悉vi、熟悉linux搭建测试环境。比如LAMP环境搭建。

第五类问题:缺陷相关知识,最基本的是缺陷跟踪的流程(流程的基本要素),整体的流程,最好能在纸上给面试官画出来(尤其是男面试官,从男人好色的角度来看,写得很清楚很重要),缺陷单的属性,至少能列出20个属性,每个属性的意义,如何描述好缺陷单,缺陷单描述的5C原则,比如缺陷重现步骤应该complete。如何描述一个你认为的最经典的bug单。

第六类问题:用例相关,最基本的包括用例的格式要素,用例设计工程方法论,每个方法要求(方法的背景,操作步骤,优缺点、适应范围,与其他用例方法如何配合),在项目中如何利用测试用例设计工程方法。如何评价、评审测试用例,评审从哪些维度?要设计好测试用例需要哪些方面的知识结构,比如技术、业务、方法。

第七类问题:软件测试流程,系统测试相关规范和标准的流程:熟悉产品/项目,需求评审,测试需求,测试计划,测试方案,测试用例,预测试,第一轮正式测试、第二轮回归测试、第三轮测试,测试报告,测试总结,测试指南。

第八类问题,网络相关,最基本的网络基础知识,比如TCP/IP协议。

第九类问题,测试工具,包括三个大的类型,第一类是性能测试工具、自动化测试工具、测试管理类工具。最起码的要求是熟悉工具的使用。

第十类问题,给你一个软件,比如QQ、QQ斗地主,你如何去测试,这类问题基本的思路是,从软件质量模型、测试工具、测试方法、测试流程、探索式测试等角度先宏观解决,然后再具体微观讲解用例如何设计等。

第十一类问题,一个优秀/卓越的软件测试工程师应该具备哪些能力与素质,素质方面包括沟通、五心工程师、追求完美等;

第十二类问题,最后一个问题,面试官一般会问,您还有什么想问的吗?还有什么想了解的吗?总体上来说最重要的是留下一个好的近因效应,就好比相亲的时候,分手离开的时候,留下好的最后的印象,基本的思路应该分三种情况,第一种是面试官对你满意,自己也感觉不错的情况下,先表示感谢,然后积极主动的问题,比如,非常感谢您给的这次机会,但是我还是想问,如果我有下一轮面试,我想知道知道是什么时候,我应该再做哪些方面的准备。第二种情况是面试官和自己感觉都一般般,感觉自己是鸡肋,这个时候说不说很重要,基本的套路是,非常感谢面试官给的这个机会,坦白地说我对自己今天的面试表现不是非常满意,还可以表现得更好,但是如果我还是非常想得到这个机会,您能否给我一些建议。第三种情况是面试情况非常糟糕,这种情况下,很少有人能说出感谢,但这恰恰体现一个人的风度。基本的思路是,不管怎么样,还是得感谢您给的机会,让我自己认识到自己的不足,坦白地说我离这个岗位的要求还有些距离,但是我还是想知道,如果将来我还想来咱们公司面试,您能否给点具体建议。

总结,面试是一个相亲的过程,相亲的成败取决于很多要素,但是好的、充分地准备,能够让我们更加从容地和主动的去面对压力与挑战,而不是简单地把自己变成超市里面的菜,供人挑选。


分享文章:华为面试linux命令 linux面试会问什么
网站路径:http://myzitong.com/article/doggogi.html