测试学习进行中

发布新日志

  • loadrunner的工作原理图

    2010-03-11 15:07:05


    下面一个是LoadRunner的工作原理图,更多的LoadRunner的理论请参考: http://www.wilsonmar.com/1loadrun.htm
    wilson先生对LoadRunner有比较透彻的研究,这可以从他的分析中看出.

    这张是LoadRunner的总体架构图,包括各个组件VUGen, Controller和Analysis之间的关系.
    LR总体架构图

    这是LoadRunner的工作原理,从图中可以看出如何利用LoadRunner进行一次典型的系统性能测试
    LR工作图

    这是一个内部流程图,LoadRunner内部各个组件之间如何进行交互,数据流和文件流之间如何进行.
    LR各部件工作图

    下面是各个步骤的简单介绍:


    1. application serverson this page under test are placed under stress by
    2. driver processes mdrv.exe (the Multi-threaded Driver Process) and r3vuser.exe which emulate application clients such as Internet Explorer web brower. It performs 3 main actions:
    (1). Kli> cpp (C language pre-processor) cci (C pre-compiling) which creaes a file with ci file, and
    (2). execute using the driver for the protocol technology being tested.

    Runs can be invoked to run “silently” by invoking Mdrv.exe from a Windows batch script.

    Mdrv can automatically stop loading Vusers because they communicate with Vusers and monitor CPU usage on Windows Load Generator machines.

    A separate JVM is instantiated by each Java-based Vuser on Windows-based machines. #Java Vusers are not supported on Unix platforms.

    3. virtual Vusers are invoked as groups (logical collection of virtual users running the same script. on a specific load generator machine)
    4. by agents (3,900K magentproc.exe) running as a service or as a processon this page
    5. on load generator client machines.

    6. Each machine hosting agents maintains an Execution Log in a .qtp file.
    7. When logging is enabled, the agent also creates within the results folder a sequential log file for each Vuser (segregated by Vuser group).
    8. During execution, this file is displayed in the view > Show Output window on the LoadRunner Controller machine.

    9. Upon a pre-set delay, the Scheduler running on a Controller machine instructs agents (via Windows port 54345 or dynamic Unix port) to initiate test session scenarios. The Controller (wlrun.exe) sends a copy of scenario files along with the request.
    10. Agents are launched by the Remote Agent Dispatcher process (formerly called Remote Command Launcher (RCL)) on each load generator machine.
    11. Each agent refer to scenario (.lrs) definition files to determine which Vuser groups and scripts to run on host machines.

    Idea This means the Controller can be started from a DOS batch (.bat) file (preferrably with a short name on a root drive):
    REM Start Controller:
    SET M_ROOT=C:\Program Files\Mercury Interactive\LoadRunner\bin
    cd %M_ROOT%
    wlrun.exe -TestPath D:\Dev\Dev1.lrs -port 8080 -Run -DontClose
    pause Press Ctrl-Z to keep this window or

    * Including the -Run parameter is the same as manually pressing the “Start Scenario” automatically upon invocation. This is not a good idea because you may have to decide about collating the file from a previous run or want to change the output folder.
    * This assumes that the system’s environment PATH variableanother page on this site was updated to include where LoadRunner is installed.

    12. The Controller is invoked using parameter values within files in the Windows OS folder (WINNT for Windows 2000 and WINDOWS for Windows XP). The Windows folder is used because LoadRunner is designed to have only one instance of Controller running at a time on a machine.

    Idea To quickly switch among several applications, save a copy of LoadRunner’s ini files after working on it within the Controller, then use Notepad to craft a batch fileanother page on this site to copy application-specific versions of ini files before executing wlrun. An example of file copy actions for application XXX:

    copy %WinDir%/wlrun7-XXX.ini %WinDir%/wlrun7.ini
    copy %WinDir%/wlrun7-XXX.dft %WinDir%/wlrun7.dft

    Some defaults you might want to change:
    * In the wlrun7.ini file file [output] section, MaxNumberOfOutputMessages= from 10000 to 100000 for long runs. This limits the number of output messages stored in the database.
    * MaxOutputUIRowsToShow limits the amount of messages/errors (lines) displayed in the Controller’s Output window.
    * In the QTWeb.lrp file within the LoadRunner Program Files dat\protocols folder section [Vugen], add entry MaxThreadPerProcess=5 to limit the number of threads managed by each load generator mdrv.exe process.

    Values for DefaultScenarioDir, DefaultScriptDir, DefaultResultDir, and [Recent File List] stored in the wlrun5.ini and wlrun7.dft files updated whenever values are changed within the Controller.

    13. The blocks of actions taken by each Vuser are
    14. defined in Vu scriptsanother page on this site created using Loadrunner’s VuGen.exe. When this program is invoked, it stores in the Windows folder a comparamui.INI file to save under “[LastTablesUsed]” a history of files and [ParamDialogDates] specified using menu option Insert > New Parameter > Dates.

    VuGen stores and retrieves a vugen.ini file in the Windows folder. Mercury KnowledgeBase article When using Java, enable additional debug options:
    [DynaDlg]
    JavaLevel=3

    When using 8.0 scripts within VuGen 8.1, add to Vugen.ini:
    [Editor]
    OLDEDITOR = 1

    VuGen opens in LR folder template/qtweb default.cfg and script. files.

    Vu scripts can be coded to use variable values obtained from parameter files external to the script.

    I have a lot more on VuGenanother page on this site here

    15. During a run, execution results are stored to a results folder.
    Idea I prefer to set Results Settings to “Automatically create a results directory for each scenario execution.” which means that LR will increment the name of the Results Name when I start a scenario runs. For example, a value of “Res11″ will be automatically incremented to “Res12″ or sometimes “Res11-1″.

    Errors are written to the output.mdb MS Access database. tool See the ASP page I have written to access this databaseanother page on this site

    16. Within each results folder, a “Log” folder is automatically created to contain a log file for each group. After a run, to view a log file from within the Controller, click Vusers button then right-click on a group to select “Show Vuser Log”.

    17. As a scenario is run, monitors maintain counters locally on each host.

    18. After a run, the “collate” process takes .eve and .lrr result files and creates in the results folder a temporary .mdb (MS-Accessanother page on this site) database.

    To prevent errors when processing large result files, use MSDE (Microsoft SQL Desktop Engine). Don’t install it from the Add-in folder on the LoadRunner 7.8 CD, which is obsolete SQL7. Download MSDE 2000 Release A which includes MSDE 2000 Service Pack 3a and MDAC 2.7 SP1a for use by Analysis on any Windows machine. Extract the file and share that folder. Open a command window to run a command such as:

    setup SAPWD=”StrongPassword” INSTANCENAME=”LR” SECURITYMODE=SQL DISABLENETWORKPROTOCOLS=0 /L*v path to log file

    Using Windows Explorer, share the Data folder.
    Then in Analysis Options > Database tab, use 8.3 names without spaces (indentified with DOS command DIR /X):
    1. Input the SAPWD password specified above.
    2. Logical Storage location: \\loadclient02\Data (the folder you shared)
    3. Physical Storage Location: C:\PROGRA~1\MICROS~1\MSSQL\Data (not C:\Program Files\Microsoft SQL Server\MSSQL\Data)
    4. Click “Test parameters”. (This takes a few seconds)

    19. [icon for Analysis module] The Analysis Module (8,320K analysisu.exe)
    20. generates analysis graphs and reports using data from the .mdb database.
    21. The LoadRunner Results file results_name.lrr from each scenario run — also called an Analysis document file — is read by the Analysis program to display Percentile graphs.
    22. By default, the LRReport folder is created in the test analyst’s local machine My Documents folder to store Analysis Session files.
    23. They can optionally be formated in HTML.
    24. Their format are controlled by a .tem template file.

    25. Optionally, Mercury’s Remote Performance Monitoring (RPM) MS-IIS/ASP web server for LoadRunner 7.8 can be installed on a Windows 2000 server (Caution! but not on a Windows 2003 server) so that
    26. load test results to be viewed using a web browser.
    Not pictured is the LoadRunner Tuning Module (a separate $50,000 product).

    原文请参考这里 http://www.wilsonmar.com/1loadrun.htm


    转载自:http://www.rickyzhu.com/21_principle-graph-of-loadrunner.html

  • IBM开发中心测试平台和最佳实践测试方法

    2010-03-11 13:26:43

    天极ChinaByte 8月30日消息 在今天召开的IBM Rational软件开发高峰论坛(IBM RSDC China 2007)下午的SOA 专场上,IBM中国软件开发中心部门经理杨晓斌做了关于IBM中国软件开发中心测试中心的最佳实践测试方法的报告,他表示首先要关注测试的重要性,以及在测试过程中最大的问题在什么地方?第二个关键问题是,IBM全过程控制方法论是什么?第三,作为一个专业的测试团队或测试中心我们应该考虑什么事情或需要做些什么工作。然后杨晓斌先生还介绍了在实际工作中的经验和最佳实践测试方法。


    IBM中国软件开发中心部门经理 杨晓斌

      为什么要测试,我们测试的目标是什么?作为测试人员和测试经理或了解测试目的软件开发人员也许不需要了解,但现在理念完全改变了,所有人都应该了解测试,不管是项目管理还是开发人员,以及其他团队成员。现在强调测试驱动,业务驱动。测试的目的是什么?最重要的目的是满足用户的需要。讲到测试重要性,很重要的是成本问题,在软件开发有这么一些阶段,有需求分析阶段,设计阶段,编码阶段,还有测试和最终的交付阶段,到产品上线的过程,如果我们发现问题越早,我们付出代价越低,如果到了生产线以后发现问题成本几乎是以前的95倍,因为这个问题会有很多流程,如果到了产品生产线环境里,带来的费用是非常巨大的。作为测试人员发现BUG应该很有成就感,这对公司有很大的贡献。

      既然测试那么重要,给客户带来信心,帮助我们提高质量,帮助我们改进生产力等,我们如何做呢?首先有一个概念全寿命测试的概念,为什么叫全寿命,在软件测试各个阶段都要引入测试的理念,要同各个团队打交道,测试团队并不只是后端,进入最终代码一级才有的工作,在我们之前会跟很多部门有沟通、交流,有需求,还有跟市场的部门,还有沟通渠道,还有对外交流,项目管理,IT部门,比如要有测试网络,有IT部门的介入,有系列工具的部署,架构设计方法论等等,这一系列都需要有组织级的行为,需要在不同阶段有不同协作的机制。看一下不同测试阶段的划分,这是最早项目的起始阶段,需求分析,到了项目问题的分析到了设计阶段,到系统测试、安装和维护阶段,传统的测试阶段会在设计的后期,会有一些设计文档可能会有测试人员介入或了解,到编码后期测试工作会进来,这理念和过去讲的传统测试不一样的,为什么要这样设计?有他自身的依据,因为越到后面发现问题成本越高,而且传统的说法,在测试阶段发现很多BUG,很多BUG的分类很多是在设计这一块出现的,并不是在编码,设计的理念或需求分析就有偏差,在这个阶段要抓住这个问题。

      讲到每个阶段产生代码的个数,这是国际知名的软件工程研究所发现的规律,每个程序员每小时产生4.2个缺陷,这数据会根据不同的开发语言,技术层面不同会有所差异,这是一个平均值。而且大部分的缺陷产生于生产、开发阶段,在编码阶段产生很多的缺陷,到后面成本投入越来越高,尽早发现缺陷,尽早解决它,以降低我们的成本。关于测试生命周期和开发生命周期,在全生命阶段,我们所有计划和需求同步进行,而且是一个循环,往往会有多个周期。第一个循环,第二个循环是迭代式开发,为什么要尽早引入而且要频繁测试。

      下面讲到IBM的测试模型,在定义阶段,项目要做什么样的东西,项目范围多大,项目要在什么阶段产出什么样的产出物,测试的准备工作,测试的计划就会开始启动。测试准备开始了,随后会在设计阶段,还有生成阶段,代码生成阶段,对于单元测试,之后是集成测试,还有系统测试等等都会开始引入。还有测试软件的配置管理,测试环境的建立,需求阶段,定义阶段,一直到最后产品上线,全程都有。有人觉得奇怪,软件平台搭建和软件工具配置跟这有什么关系,其实测试跟开发是类似的,有很多要递交的东西,比如测试计划,测试用意,测试数据,测试的报告,测试中间产生的状态,这些东西都是需要有一个测试的平台来管理,因为你不是一个人作战,你是一个团队,项目越大,你测试不是一个人,是一个团队或一个中心,很多人在里面需要一系列的产出物,这是需要有人管理的,不是在你大脑里或你手里的笔记里,这是没有办法沟通的,一个一个信息孤岛是没有办法交流的,而且没有办法互相监测。不知道大家在座有没有感觉,很多做测试管理和测试开发,测试培训人员,他们面对最大的挑战,我碰多碰到客户讲现在最大挑战,是我不知道现在进度在哪儿,也不知道挑战什么样子,也不知道手下什么样,这就是缺乏平台导致的,所以环境的准备从头到尾。

      这是测试的各个环节,项目开始阶段,代码设计阶段到执行阶段是一一对应的,项目从最初的定义,测试的定义,测试的目标等等,通常讲的是主要的测试计划,各个层面的测试计划。客户接受测试计划、用户接受测试计划、下一个阶段系统测试计划。从这个侧面看像一个倒写的V,所以我们讲V字型测试模型,现在反过来更强调X,为什么叫X?就是一个V再加一个V,上下两个V就变成X,刚开始可能需求驱动测试,有需求,有项目的立项,有各种各样的计划,反过来,测试又会驱动开发,可能就变成X,再往后有更多测试模型叫W,一个V接一个V下去,多次迭代,每次交付了一部分的功能、代码、设计,所以我们测试在不断循环。

      我们测试到底为什么服务?测试不仅仅是为开发团队服务,这是很重要的一个思考问题,通常测试团队开发团队协作非常紧密,事实上不仅需要跟它们合作,还需要跟需求的业务分析部门,甚至跟后面的运营部门,产品上线了,或者递交到外部,我们更多的是要以整合业务的角度来看待问题,这是很重要的方面。看业务驱动的软件开发测试生命周期,有不同角色划进来,有最终用户,上层的管理层,还有测试人员、开发人员,架构设计师,这完全是循环,跨平台,跨部门,在各个阶段都有测试的理念。

      讲了很多方法和理念之后,下一个理念要引入的,有这样的方法和理念要建立什么团队来支撑我们的工作,让我们测试中心,测试团队更有效。第一点是人才培养,第二个流程建设非常重要,如果没有成型的流程,整个团队遵循的规则都很难控制的,再下面有质量量化和工程量化管理,测试项目的管理,我会一一做介绍,第一个会讲到人员,对人员有分工,角色与职能的分工。首先会有质量总监,测试经理和项目经理,会有架构设计师和软件配置人员,还有后面的测试人员,最后还有质量分析专家,到了后期很重要的环节。所以测试是一门学问,需要很多人,很多人投入,有很多专业知识在里面,我测试有什么价值,怎么提升士气和战斗力时也有人问到这个问题。

      需要特别指出的重要一点,测试是一个团队,不是一个人单独做,因为一个人只能测一点,每个人之间要有分工,分工要有合作,整个项目是一个交集,合集,怎么了解分配状况,需要集中统一的平台,所有数据在这里交流,所有人可以看到相应的数据,这样数据可以被公开和跟踪。第一个是管理平台,这里面有很多的细节,要测试要分布,比如有200个测试,要分布在10个机器上,我测试分布怎么做,最笨的办法就是一个一个系统跑,远程做一个一个跑可能要远程做。第三个压力怎么办?跟工行、农行客户,比如信用卡,他设计5年10年以后有1亿用户,现在可能只有1、2百个,他怎么保证系统设施满足将来的需求,只能通过测试方法,但是没有测试环境,而且是并发的,而且不同的测试数据在里面流入,不同的测试流程,没有自动化的工具可能做不到,现在给我的答案,没办法,这确实是一个问题,如果没有手段,现在做就是试用,比如我到江苏省,广东省,在一个省里面推广,没发现问题就用了,将来有问题将来再想办法,经常银行系统通知大家,系统在升级,就是它需要不断做调整,这会影响业务和成交额,前一段时间银行有一个案例就是这样。Rational的最佳实践测试方法其实就是要使测试工作量化,测试度量标准,建立测试任务的流程,还有测试案例管理统一模板,统一管理,一定要建立相应的测试管理的平台,缺陷和变更的管理,以及自动化的实现。

  • 如何得到大公司的测试职位

    2010-03-06 18:01:02

    如何能得到一些国内或国外大公司的测试职位?

    问题描述:如何能得到一些国内或国外大公司的测试职位?

    精彩答案:

    会员 戒情人 :

      我来简单谈谈自己的认识吧:

      1. 业务。如果你在一个行业做了多年,对这个行业的业务非常熟悉了,这绝对是一个大优势。公司无论国内国外,无论大公司小公司,在招聘时都会注明有相关行业经验优先。行业经验不是一朝一夕就能得到的,是一个长时间的积累过程。你有相关的行业经验,工作就很容易上手,而且做出成绩。有些公司招人时,对有相关的行业经验这一条是必须条件。比如复杂业务的电信行业(当然不是每个公司都是)。

      2. 学历。出身很重要的。虽然很多公司都表明更看中能力,但其实他们还是很看重你的学历的。重点大学或者研究生、博士,更容易获得好公司的青睐。

      3. 技术。大公司做测试,不单单要求能做黑盒测试,如果你擅长自动化,擅长编码,就自然而然的增加了自己的优势。

      4. 英语。好的公司都是很看重英语能力的,因为很多帮助文档,技术文档都是英文的。你英文不好,公司不会相信你有很好的能力和潜力。

    会员 yolander :

      我觉得六楼(戒情人)总结的四条已经基本概括了用人单位的要求,比如:

      1.学历——这可能是一些大公司的敲门砖了,因为无论去哪家公司面试,首先需要接触的都是HR部门,而对于HR来说,好的学历几乎等同于你的个人素质,他们都是非专业人员,无法在短时间内判断你的能力高低,所以学历就变成了唯一的衡量标准。

      2.业务能力(行业知识)——这个要看你从事的是哪些行业软件的测试,如果是通用软件的,那么业务就显得不是特别的关键了,但如果是专业软件,尤其是业务流程复杂的,专业性越强,对业务能力的要求也就越高,如果能够在相关行业有一定的积累,那么被聘用的可能性也会较大,这个通常会通过你的工作经历和从业时间来判断,有时用人部门也会通过面谈等方式进行侧面了解,而且很多时候它可以作为学历欠缺方面的弥补,前提时,你要先给自己争取到面试的机会。

      3.技术能力(测试专业)——主要是指测试相关的专业技能,比如测试设计、测试开发,这个是可以通过一些问卷,或者面试来进行考核的,同时如果具备了测试策划、测试管理、质量管理项目管理配置管理等相关经验那就更好了,从我罗列出来的内容也可以看出,倒不一定是有开发经验,才能做好测试,不过如果在考核过程中适当的表现出自己的细致认真的一面,也还是有所进益的。

      4.语言能力——这个也跟从事的行业相关,如果是欧美日韩等合资公司,或者做对外业务较多的国内公司,是会对语言能力有一定的要求的,但如果是只做国内业务的公司,据我所知,国内也有不少IT公司是做国内行业解决方案的,这些公司就不会对语言能力做太多的要求。

      以上要求如果全都具备了,那么剩下的可能就是等待机遇了吧。

    原帖地址:http://bbs.51testing.com/thread-173771-1-2.html

    版权声明:本文由会员戒情人、yolander首发于51Testing软件测试论坛每周一问活动(09-11-03)。

    原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

  • 华为

    2008-08-07 13:54:21

    华为软件测试工程师面试题
    2007-11-04 19:44:26

    1:请你分别划OSI的七层网络结构图,和TCP/IP的五层结构图?
    http://www.kaiguandianqi.com/pic/paper/paper_20_1.gif
    http://www.vlan9.com/ArtImage/20051016/2005101629_1.jpg
    OSI的七层网络结构图,和TCP/IP的五层结构图
    OSI
    OSI是Open System Interconnect的缩写,意为开放式系统互联。在OSI出现之前,计算机网络中存在众多的体系结构,其中以IBM公司的SNA(系统网络体系结构)和DEC公司的DNA(Digital Network Architecture)数字网络体系结构最为著名。为了解决不同体系结构的网络的互联问题,国际标准化组织ISO(注意不要与OSI搞混))于1981年制定了开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM)。这个模型把网络通信的工作分为7层,它们由低到高分别是物理层(Physical Layer),数据链路层(Data Link Layer),网络层(Network Layer),传输层(Transport Layer),会话层(Session Layer),表示层(Presen tation Layer)和应用层(Application Layer)。第一层到第三层属于OSI参考模型的低三层,负责创建网络通信连接的链路;第四层到第七层为OSI参考模型的高四层,具体负责端到端的数据通信。每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持,而网络通信则可以自上而下(在发送端)或者自下而上(在接收端)双向进行。当然并不是每一通信都需要经过OSI的全部七层,有的甚至只需要双方对应的某一层即可。物理接口之间的转接,以及中继器与中继器之间的连接就只需在物理层中进行即可;而路由器与路由器之间的连接则只需经过网络层以下的三层即可。总的来说,双方的通信是在对等层次上进行的,不能在不对称层次上进行通信。

    OSI参考模型的各个层次的划分遵循下列原则:

    1、同一层中的各网络节点都有相同的层次结构,具有同样的功能。

    2、同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。

    3、七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。

    4、不同节点的同等层按照协议实现对等层之间的通信。

    第一层:物理层(PhysicalLayer),规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。具体地讲,机械特性规定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小、阻抗匹配、传输速率距离限制等;功能特性是指对各个信号先分配确切的信号含义,即定义了DTE和DCE之间各个线路的功能;规程特性定义了利用信号线进行bit流传输的一组操作规程,是指在物理连接的建立、维护、交换信息是,DTE和DCE双放在各电路上的动作系列。

    在这一层,数据的单位称为比特(bit)。

    属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

    第二层:数据链路层(DataLinkLayer):在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。  

    数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

    在这一层,数据的单位称为帧(frame)。

    数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。

    第三层是网络层

    在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。

    如果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地址解析协议(ARP)。有关路由的一切事情都在第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。

    在这一层,数据的单位称为数据包(packet)。

    网络层协议的代表包括:IP、IPX、RIP、OSPF等。

    第四层是处理信息的传输层。第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段(segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通信过程中传输层对上层屏蔽了通信传输系统的具体细节。

    传输层协议的代表包括:TCP、UDP、SPX等。

    第五层是会话层

    这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。

    第六层是表示层

    这一层主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。

    第七层应用层,应用层为操作系统或网络应用程序提供访问网络服务的接口。

    应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。

      通过 OSI 层,信息可以从一台计算机的软件应用程序传输到另一台的应用程序上。例如,计算机 A 上的应用程序要将信息发送到计算机 B 的应用程序,则计算机 A 中的应用程序需要将信息先发送到其应用层(第七层),然后此层将信息发送到表示层(第六层),表示层将数据转送到会话层(第五层),如此继续,直至物理层(第一层)。在物理层,数据被放置在物理网络媒介中并被发送至计算机 B 。计算机 B 的物理层接收来自物理媒介的数据,然后将信息向上发送至数据链路层(第二层),数据链路层再转送给网络层,依次继续直到信息到达计算机 B 的应用层。最后,计算机 B 的应用层再将信息传送给应用程序接收端,从而完成通信过程。下面图示说明了这一过程。

      OSI 的七层运用各种各样的控制信息来和其他计算机系统的对应层进行通信。这些控制信息包含特殊的请求和说明,它们在对应的 OSI 层间进行交换。每一层数据的头和尾是两个携带控制信息的基本形式。

      对于从上一层传送下来的数据,附加在前面的控制信息称为头,附加在后面的控制信息称为尾。然而,在对来自上一层数据增加协议头和协议尾,对一个 OSI 层来说并不是必需的。

      当数据在各层间传送时,每一层都可以在数据上增加头和尾,而这些数据已经包含了上一层增加的头和尾。协议头包含了有关层与层间的通信信息。头、尾以及数据是相关联的概念,它们取决于分析信息单元的协议层。例如,传输层头包含了只有传输层可以看到的信息,传输层下面的其他层只将此头作为数据的一部分传递。对于网络层,一个信息单元由第三层的头和数据组成。对于数据链路层,经网络层向下传递的所有信息即第三层头和数据都被看作是数据。换句话说,在给定的某一 OSI 层,信息单元的数据部分包含来自于所有上层的头和尾以及数据,这称之为封装。

      例如,如果计算机 A 要将应用程序中的某数据发送至计算机 B ,数据首先传送至应用层。 计算机 A 的应用层通过在数据上添加协议头来和计算机 B 的应用层通信。所形成的信息单元包含协议头、数据、可能还有协议尾,被发送至表示层,表示层再添加为计算机 B 的表示层所理解的控制信息的协议头。信息单元的大小随着每一层协议头和协议尾的添加而增加,这些协议头和协议尾包含了计算机 B 的对应层要使用的控制信息。在物理层,整个信息单元通过网络介质传输。

      计算机 B 中的物理层收到信息单元并将其传送至数据链路层;然后 B 中的数据链路层读取计算机 A 的数据链路层添加的协议头中的控制信息;然后去除协议头和协议尾,剩余部分被传送至网络层。每一层执行相同的动作:从对应层读取协议头和协议尾,并去除,再将剩余信息发送至上一层。应用层执行完这些动作后,数据就被传送至计算机 B 中的应用程序,这些数据和计算机 A 的应用程序所发送的完全相同 。

      一个 OSI 层与另一层之间的通信是利用第二层提供的服务完成的。相邻层提供的服务帮助一 OSI 层与另一计算机系统的对应层进行通信。一个 OSI 模型的特定层通常是与另外三个 OSI 层联系:与之直接相邻的上一层和下一层,还有目标联网计算机系统的对应层。例如,计算机 A 的数据链路层应与其网络层,物理层以及计算机 B 的数据链路层进行通信
    
    2:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?
    
    3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?
    
    4:请问C++的类和C里面的struct有什么区别?
    
    5:请讲一讲析构函数和虚函数的用法和作用?
    
    6:全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?
    
    7:一些寄存器的题目,主要是寻址和内存管理等一些知识。
    
    8:8086是多少尉的系统?在数据总线上是怎么实现的?
    
    軟件測試的各階段!

    面试就是跟你聊聊工作,看经验了
    笔试,看看数据结构,二叉树,排序,什么的

    可能会考多线程


    交换的基础协议

    1.软件测试对应开发流程各阶段应该怎么样划分?单元测试,集成测试,系统测试各对应与开发流程的那几个文档?
    2.压力测试和性能测试的区别?

    switch(n)中的n不能是以下那种类型  A char B int C unsigned D double

     

    华为全套面试题
    华为全套面试题(基础版)


    (一)

    慧通:

    1。什么是预编译,何时需要预编译:

    答案:1、总是使用不经常改动的大型代码体。

    2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

    2。  char * const p

         char const * p

         const char *p

    上述三个有什么区别?

    答案:

    char * const p; //常量指针,p的值不可以修改

    char const * p;//指向常量的指针,指向的常量值不可以改

    const char *p; //和char const *p

     

    3。char str1[] = "abc";

    char str2[] = "abc";

    const char str3[] = "abc";

    const char str4[] = "abc";

    const char *str5 = "abc";

    const char *str6 = "abc";

    char *str7 = "abc";

    char *str8 = "abc";

    cout << ( str1 == str2 ) << endl;

    cout << ( str3 == str4 ) << endl;

    cout << ( str5 == str6 ) << endl;

    cout << ( str7 == str8 ) << endl;

    结果是:0 0 1 1

    str1,str2,str3,str4是数组变量,它们有各自的内存空间;

    而str5,str6,str7,str8是指针,它们指向相同的常量区域。

    4。 以下代码中的两个sizeof用法有问题吗?[C易]

    void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母

    {

        for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )

            if( 'a'<=str[i] && str[i]<='z' )

                str[i] -= ('a'-'A' );

    }

    char str[] = "aBcDe";

    cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;

    UpperCase( str );

    cout << str << endl;

    答案:函数内的sizeof有问题。根据语法,sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。函数外的str是一个静态定义的数组,因此其大小为6,因为还有'\0',函数内的str实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4。

     

    5。一个32位的机器,该机器的指针是多少位

    答案:指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。

     

    6。main()

    {

      int a[5]={1,2,3,4,5};

       int *ptr=(int *)(&a+1);

       printf("%d,%d",*(a+1),*(ptr-1));

    }

    答案:2。5

    *(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5

    &a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)

    int *ptr=(int *)(&a+1);

    则ptr实际是&(a[5]),也就是a+5

    原因如下:

    &a是数组指针,其类型为 int (*)[5];

    而指针加1要根据指针类型加上一定的值,

    不同类型的指针+1之后增加的大小不同

    a是长度为5的int数组指针,所以要加 5*sizeof(int)

    所以ptr实际是a[5]

    但是prt与(&a+1)类型是不一样的(这点很重要)

    所以prt-1只会减去sizeof(int*)

    a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].

    7。请问以下代码有什么问题:

    int  main()

    {

    char a;

    char *str=&a;

    strcpy(str,"hello");

    printf(str);

    return 0;

    }

    答案:没有为str分配内存空间,将会发生异常

    问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。

     

    8。char* s="AAA";

    printf("%s",s);

    s[0]='B';

    printf("%s",s);

    有什么错?

    答案:"AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。

    cosnt char* s="AAA";

    然后又因为是常量,所以对是s[0]的赋值操作是不合法的。

    9。写一个“标准”宏,这个宏输入两个参数并返回较小的一个。

    答案:.#define Min(X, Y) ((X)>(Y)?(Y):(X))  //结尾没有‘;’

     

    10。嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。

    答案:while(1){}或者for(;;)

     

    11。关键字static的作用是什么?

    答案:定义静态变量

     

    12。关键字const有什么含意?

    答案:表示常量不可以修改的变量。

     

    13。关键字volatile有什么含意?并举出三个不同的例子?

    答案:提示编译器对象的值可能在编译器未监测到的情况下改变。

    14。int (*s[10])(int) 表示的是什么啊?

    答案:int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。

    15。有以下表达式:

    int a=248; b=4;int const c=21;const int *d=&a;

    int *const e=&b;int const *f const =&a;

    请问下列表达式哪些会被编译器禁止?为什么?

    答案:*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;

    *c 这是个什么东东,禁止

    *d 说了是const, 禁止

    e = &a 说了是const 禁止

    const *f const =&a; 禁止

    16交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3;

    答案:有两种解法, 一种用算术算法, 一种用^(异或)

    a = a + b;

    b = a - b;

    a = a - b;

    or

    a = a^b;// 只能对int,char..

    b = a^b;

    a = a^b;

    or

    a ^= b ^= a;

    17.c和c++中的struct有什么不同?

    答案:c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private

    18.#include <stdio.h>

      #include <stdlib.h>

      void getmemory(char *p)

      {

        p=(char *) malloc(100);

        strcpy(p,"hello world");

      }

      int main( )

      {

        char *str=NULL;

        getmemory(str);

        printf("%s/n",str);

        free(str);

        return 0;

       }

    答案:程序崩溃,getmemory中的malloc 不能返回动态内存, free()对str操作很危险

    19.char szstr[10];

      strcpy(szstr,"0123456789");

      产生什么结果?为什么?

    答案:  长度不一样,会造成非法的OS

    20.列举几种进程的同步机制,并比较其优缺点。

    答案:   原子操作

    信号量机制

       自旋锁

       管程,会合,分布式系统

     

    21.进程之间通信的途径

    答案:共享存储系统

    消息传递系统

    管道:以文件系统为基础

    22.进程死锁的原因

    答案:资源竞争及进程推进顺序非法

    23.死锁的4个必要条件

    答案:互斥、请求保持、不可剥夺、环路

     

    24.死锁的处理

    答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁

     

    25.   操作系统中进程调度策略有哪几种?

    答案:FCFS(先来先服务),优先级,时间片轮转,多级反馈

     

    26.类的静态成员和非静态成员有何区别?

    答案:类的静态成员每个类只有一个,非静态成员每个对象一个

     

    27.纯虚函数如何定义?使用时应注意什么?

    答案:virtual void f()=0;

    是接口,子类必须要实现

     

    28.数组和链表的区别

    答案:数组:数据顺序存储,固定大小

    连表:数据可以随机存储,大小可动态改变

     

    29.ISO的七层模型是什么?tcp/udp是属于哪一层?tcp/udp有何优缺点?

    答案:应用层

    表示层

    会话层

    运输层

    网络层

    物理链路层

    物理层

    tcp /udp属于运输层

    TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。

    与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。

    tcp: 提供稳定的传输服务,有流量控制,缺点是包头大,冗余性不好

    udp: 不提供稳定的服务,包头小,开销小  

    30:(void *)ptr 和 (*(void**))ptr的结果是否相同?其中ptr为同一个指针

    答案:.(void *)ptr 和 (*(void**))ptr值是相同的

    31:int main()

       {

        int x=3;

        printf("%d",x);

        return 1;

      

       }

    问函数既然不会被其它函数调用,为什么要返回1?

    答案:mian中,c标准认为0表示成功,非0表示错误。具体的值是某中具体出错信息

    32,要对绝对地址0x100000赋值,我们可以用

    (unsigned int*)0x100000 = 1234;

    那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?

    答案:*((void (*)( ))0x100000 ) ( );

    首先要将0x100000强制转换成函数指针,即:

    (void (*)())0x100000

    然后再调用它:

    *((void (*)())0x100000)();

    用typedef可以看得更直观些:

    typedef void(*)() voidFuncPtr;

    *((voidFuncPtr)0x100000)();

    33,已知一个数组table,用一个宏定义,求出数据的元素个数

    答案:#define NTBL

    #define NTBL (sizeof(table)/sizeof(table[0]))

     

    34。线程与进程的区别和联系? 线程是否具有相同的堆栈? dll是否有独立的堆栈?

    答案:进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。

    每个线程有自己的堆栈。

    DLL中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中的代码是EXE中的线程所调用,那么这个时候是不是说这个DLL没有自己独立的堆栈?如果DLL中的代码是由DLL自己创建的线程所执行,那么是不是说DLL有独立的堆栈?

    以上讲的是堆栈,如果对于堆来说,每个DLL有自己的堆,所以如果是从DLL中动态分配的内存,最好是从DLL中删除,如果你从DLL中分配内存,然后在EXE中,或者另外一个DLL中删除,很有可能导致程序崩溃

    35。unsigned short A = 10;

    printf("~A = %u\n", ~A);

    char c=128;

    printf("c=%d\n",c);

    输出多少?并分析过程

    答案:第一题,~A =0xfffffff5,int值 为-11,但输出的是uint。所以输出4294967285

    第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以输出-128。

    这两道题都是在考察二进制向int或uint转换时的最高位处理。

     

    (二)

    1. -1,2,7,28,,126请问28和126中间那个数是什么?为什么?

    答案:第一题的答案应该是4^3-1=63

    规律是n^3-1(当n为偶数0,2,4)

          n^3+1(当n为奇数1,3,5)

    2.用两个栈实现一个队列的功能?要求给出算法和思路!

    答案:设2个栈为A,B, 一开始均为空.

    入队:

    将新元素push入栈A;

    出队:

    (1)判断栈B是否为空;

    (2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;

    (3)将栈B的栈顶元素pop出;

    这样实现的队列入队和出队的平摊复杂度都还是O(1), 比上面的几种方法要好。

     

    3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?

    答案:函数名: atol

    功 能: 把字符串转换成长整型数

    用 法: long atol(const char *nptr);

    程序例:

    #include <stdlib.h>

    #include <stdio.h>

    int main(void)

    {

    long l;

    char *str = "98765432";

    l = atol(lstr);

    printf("string = %s integer = %ld\n", str, l);

    return(0);

    }

     

    4。对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

    答案:c用宏定义,c++用inline

    5。直接链接两个信令点的一组链路称作什么?

    答案:PPP点到点连接

     

    7。软件测试都有那些种类?

    答案:黑盒:针对系统功能的测试    白合:测试函数功能,各函数接口

    8。确定模块的功能和模块的接口是在软件设计的那个队段完成的?

    答案:概要设计阶段

     

    9。enum string

        {

        x1,

        x2,

        x3=10,

        x4,

        x5,

        }x;

       问x;

    答案:取值在0。1。10。11。12中的一个

     

    10。unsigned char *p1;

        unsigned long *p2;

        p1=(unsigned char *)0x801000;

        p2=(unsigned long *)0x810000;

        请问p1+5=  ;

            p2+5=  ;

    答案:801005; 810014。不要忘记了这个是16进制的数字,p2要加20变为16进制就是14

    选择题:

      1.Ethternet链接到Internet用到以下那个协议?

      A.HDLC;B.ARP;C.UDP;D.TCP;E.ID

      2.属于网络层协议的是:

      A.TCP;B.IP;C.ICMP;D.X.25

      3.Windows消息调度机制是:

      A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;

    答案:b,a,c

    四.找错题:

      1.请问下面程序有什么错误?

       int a[60][250][1000],i,j,k;

       for(k=0;k<=1000;k++)

        for(j=0;j<250;j++)

         for(i=0;i<60;i++)

          a[i][j][k]=0;

    答案:把循环语句内外换一下

    2。以下是求一个数的平方的程序,请找出错误:

        #define SQUARE(a)  ((a)*(a))

        int a=5;

        int b;

        b=SQUARE(a++);

    答案:这个没有问题,s(a++),就是((a++)×(a++))唯一要注意的就是计算后a=7了

    3。typedef unsigned char BYTE

         int examply_fun(BYTE gt_len; BYTE *gt_code)

          { 

          BYTE *gt_buf;

          gt_buf=(BYTE *)MALLOC(Max_GT_Length);

          ......

          if(gt_len>Max_GT_Length)

            {

            return GT_Length_ERROR; 

            }

            .......

          }

    答案:要释放内存

     

    问答题:

    1.IP Phone的原理是什么?

    答案:IPV6

    2.TCP/IP通信建立的过程怎样,端口有什么作用?

    答案:三次握手,确定是哪个应用程序使用该协议

     

    (三)

    1、局部变量能否和全局变量重名?

    答案:能,局部会屏蔽全局。要用全局变量,需要使用"::"

    局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内

    2、如何引用一个已经定义过的全局变量?

    答案:extern

    可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错

    3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

    答案:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错

    4、语句for( ;1 ;)有什么问题?它是什么意思?

    答案:和while(1)相同。

    5、do……while和while……do有什么区别?

    答案:前一个循环一遍再判断,后一个判断以后再循环。

    6、请写出下列代码的输出内容

    #include<stdio.h>

    main()

    {

    int a,b,c,d;

    a=10;

    b=a++;

    c=++a;

    d=10*a++;

    printf("b,c,d:%d,%d,%d",b,c,d);

    return 0;

    }

    答案:10,12,120

     a=10;

     b=a++;//a=11 b=10

     c=++a;//a=12 c=12

     d=10*a++;//a=13 d=120

    高级题

    1、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

    答案:

    全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

    而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

    static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

    static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

    static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

    static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

    2、程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于( )中。

    答案:栈;静态区;堆

    3、设有以下说明和定义:

    typedef union {long i; int k[5]; char c;} DATE;

    struct data { int cat; DATE cow; double dog;} too;

    DATE max;

    则语句 printf("%d",sizeof(too)+sizeof(max));的执行结果是:______

    答案:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20

    data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.

    所以结果是 20 + 32 = 52.

    当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20

    4、队列和栈有什么区别?

    答案:队列先进先出,栈后进先出÷

    5、这道题目出错了,这里就不写上了。

    6、已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此结点,然后删除。

    答案:slnodetype *Delete(slnodetype *Head,int key){}中if(Head->number==key)

    {

    Head=Pointer->next;

    free(Pointer);

    break;

    }

    Back = Pointer;

            Pointer=Pointer->next;

    if(Pointer->number==key)

    {

                Back->next=Pointer->next;

    free(Pointer);

    break;

    }

    void delete(Node* p)

    {

        if(Head = Node)

        while(p)

    }

    7、请找出下面代码中的所以错误

    说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

    1、#include"string.h"

    2、main()

    3、{

    4、 char*src="hello,world";

    5、 char* dest=NULL;

    6、 int len=strlen(src);

    7、 dest=(char*)malloc(len);

    8、 char* d=dest;

    9、 char* s=src[len];

    10、 while(len--!=0)

    11、 d++=s--;

    12、 printf("%s",dest);

    13、 return 0;

    14、}

    答案:还要加上#include <stdio.h>

    int main(){

    char* src = "hello,world";

    int len = strlen(src);

    char* dest = (char*)malloc((len+1)*sizeof(char));  //要为\0分配一个空间

    char* d = dest;

    char* s = &src[len-1]; //指向最后一个字符

    while( len-- != 0 )

    *d++=*s--;

    *d = 0; //尾部要加\0

    printf("%s\n",dest);

    free(dest);// 使用完,应当释放空间,以免造成内存汇泄露

    return 0;

    }

     

     

    华为笔试题(3)

    2006-09-29 19:41


    一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)

    1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。(    正确 )

    2、int (*ptr) (),则ptr是一维数组的名字。( 错误  int (*ptr) ();定义一个指向函数的指针变量    )

    3、指针在任何情况下都可进行>,<,>=,<=,==运算。(   错误  )

    4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。(  错,不能用实形 )

    二、填空题(共30分)

    1、在windows下,写出运行结果,每空2分,共10分。

    char str[ ]= "Hello";

    char *p=str;

    int n=10;

    sizeof(str)=(      )

    sizeof(p)=(       )

    sizeof(n)=(       )

    void func(char str[100]){    }

    sizeof(str)=(     )

     答案:6,4,4,4, 具体解释请参看我的空间里的“C/C++程序员应聘试题剖析”

    2、void getmemory(char **p, int num)

    { *p=(char *) malloc(num);}

    void test(void)

    {  char *str=NULL;

       getmemory(&str,100);

       strcpy(str,"hello");

       printf(str);

    }

    运行test函数有什么结果?(                                )10分

     答案:输出hello,但是发生内存泄漏。

    3、设int arr[]={6,7,8,9,10};

         int *ptr=arr;

       *(ptr++)+=123;

     printf("%d,%d",*ptr,*(++ptr));

    (                                   ) 10分

    答案:8,8。这道题目的意义不大,因为在不同的编译器里printf的参数的方向是不一样的,在vc6.0下是从有到左,这里先*(++ptr) 后*pt,于是结果为8,8

    二、编程题(第一小题20,第二小题30分)

    1、  不使用库函数,编写函数int strcmp(char  *source, char *dest)

    相等返回0,不等返回-1;

    答案:一、

    int strcmp(char  *source, char *dest)

    {

     assert((source!=NULL)&&(dest!=NULL));

     int i,j;

     for(i=0; source[i]==dest[i]; i++)

     {

      if(source[i]=='\0' && dest[i]=='\0')

       return 0;

      else

       return -1;

     }

    }

    答案:二、

    int strcmp(char *source, char *dest)

    {

        while ( (*source != '\0') && (*source == *dest))

        {

    source++;

    dest++;

        }

        return ( (*source) - (*dest) ) ? -1 : 0;

    }

    2、  写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1

    答案:一、

    int fun(char *p)

    {

     if(p==NULL)

      return -1;

     else

     {

      int length = 0;

      int i = 0;

      int judge = 1;

      length = strlen(p);

      for(i=0; i<length/2; i++)

      {

       if(p[i]!=p[length-1-i])

        judge = 0;

       break;

      }

      if(judge == 0)

       return 0;

      else

       return 1;

     }

    }

    答案:二、

    int fun(char *p){ int len = strlen(p) - 1; char *q = p + len; if (!p) return -1; while (p < q) { if ((*p++) != (*q--)) return 0; } return 1;}

     

    华为笔试网络题(3)

    2006-09-30 12:48


    1.在OSI 7 层模型中,网络层的功能有( )

    A.确保数据的传送正确无误   B.确定数据包如何转发与路由

    C.在信道上传送比特流    D.纠错与流控

    2.FDDI 使用的是___局域网技术。( )

    A.以太网;    B.快速以太网;    C.令牌环;    D.令牌总线。

    3.下面那种LAN 是应用CSMA/CD协议的 ()

    A.令牌环    B.FDDI    C.ETHERNET    D.NOVELL

    4.TCP 和UDP 协议的相似之处是 ( )

    A.面向连接的协议    B.面向非连接的协议    C.传输层协议    D.以上均不对

    5.应用程序PING 发出的是___报文.( )

    A.TCP 请求报文。    B.TCP 应答报文。    C.ICMP 请求报文。   D.ICMP 应答报文。

    6.以下说法错误的是(多) ( )

    A.中继器是工作在物理层的设备    B.集线器和以太网交换机工作在数据连路层

    C.路由器是工作在网络层的设备     D.桥能隔离网络层广播

    7.当桥接收的分组的目的MAC地址在桥的映射表中没有对应的表项时,采取的策略是( )

    A.丢掉该分组   B.将该分组分片    C.向其他端口广播该分组    D.以上答案均不对

    8.LAN Switch 在网络层次模型中的地位( )

    A.物理层    B.链路层    C.网络层    D.以上都不是

    9.小于___的TCP/UDP端口号已保留与现有服务一一对应,此数字以上的端口号可自由分配。( )

    A.199      B.100     C.1024      D.2048

    10.当一台主机从一个网络移到另一个网络时,以下说法正确的是 ( )

    A.必须改变它的IP 地址和MAC 地址    B.必须改变它的IP 地址,但不需改动MAC 地址

    C.必须改变它的MAC 地址,但不需改动IP 地址    D.MAC 地址.IP 地址都不需改动

    答案:1.B; 2.C; 3.C; 4.C; 5.C; 6.BD; 7.C; 8.B; 9.C; 10.B.

     


     

    华为笔试题(4)

    2006-09-30 13:00


    1. 找错

    void test1()

    {

        char string[10];

        char* str1="0123456789";

        strcpy(string, str1);

    }

    答:表面上并且编译都不会错误。但如果string数组原意表示的是字符串的话,那这个赋值就没有达到意图。最好定义为char string[11],这样最后一个元素可以存储字符串结尾符'\0';

    void test2()

    {

        char string[10], str1[10];

      for(int I=0; I<10;I++)

      {

        str1[I] ='a';

      }

      strcpy(string, str1);

    }

    答:strcpy使用错误,strcpy只有遇到字符串末尾的'\0'才会结束,而str1并没有结尾标志,导致strcpy函数越界访问,不妨让str1[9]='\0',这样就正常了。

    void test3(char* str1)

    {

        char string[10];

        if(strlen(str1)<=10)

    {

        strcpy(string, str1);

    }

    }

    答:这又会出现第一道改错题的错误了。strlen(str1)算出来的值是不包含结尾符'\0'的,如果str1刚好为10个字符+1结尾符,string就得不到结尾符了。可将strlen(str1)<=10改为strlen(str1)<10。

    2. 找错

    #define MAX_SRM 256

    DSN get_SRM_no()

    {

        static int SRM_no;

        int I;

        for(I=0;I<MAX_SRM;I++,SRM_no++)

      {

        SRM_no %= MAX_SRM;

        if(MY_SRM.state==IDLE)

        {

          break;

        }

      }

      if(I>=MAX_SRM)

        return (NULL_SRM);

      else

        return SRM_no;

    }

    答:我不知道这段代码的具体功能,但明显有两个错误

    1,SRM_no没有赋初值

    2,由于static的声明,使该函数成为不可重入(即不可预测结果)函数,因为SRM_no变量放在程序的全局存储区中,每次调用的时候还可以保持原来的赋值。这里应该去掉static声明。

    3. 写出程序运行结果

    int sum(int a)

    {

        auto int c=0;

        static int b=3;

      c+=1;

      b+=2;

      return(a+b+c);

    }

     void main()

    {

        int I;

      int a=2;

      for(I=0;I<5;I++)

      {

        printf("%d,", sum(a));

      }

    }

    答:8,10,12,14,16

    该题比较简单。只要注意b声明为static静态全局变量,其值在下次调用时是可以保持住原来的赋值的就可以。


    4.

    int func(int a)

    {

        int b;

        switch(a)

        {

            case 1: b=30;

            case 2: b=20;

            case 3: b=16;

            default: b=0;

       }

       return b;

    }

    则func(1)=?

    答:func(1)=0,因为没有break语句,switch中会一直计算到b=0。这是提醒我们不要忘了break。呵呵。

    5:

      int a[3];

      a[0]=0; a[1]=1; a[2]=2;

      int *p, *q;

      p=a;

      q=&a[2];

    则a[q-p]=?

    答:a[q-p]=a[2]=2;这题是要告诉我们指针的运算特点

    6.

    定义 int **a[3][4], 则变量占有的内存空间为:_____

    答:此处定义的是指向指针的指针数组,对于32位系统,指针占内存空间4字节,因此总空间为3×4×4=48。

    7.

    编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。

    答:

    /*输入年月日时分秒,输出年月日时分秒的下一秒,输出仍然在原内存空间*/

    void NextMinute(int *nYear,int *nMonth,int *nDate,int *nHour,int *nMinute,int *nSecond)

    {

      int nDays;

      (*nSecond)++;  // 秒加1

      if(*nSecond>=60)  // 秒满60,做出特殊处理,下面时,日,月等类同

      {

        *nSecond=0;

        (*nMinute)++;

        if(*nMinute>=60)

        {

          *nMinute=0;

          (*nHour)++;

          if(*nHour>=24)

          {

            *nHour=0;

            (*nDate)++;

            switch(*nMonth)

            {

              case 1:

              case 3:

              case 5:

              case 7:

              case 8:

              case 10:

              case 12:

                nDays=31;

              break;

              case 2:// 判断闰年

                if(*nYear%400==0||*nYear%100!=0&&*nYear%4==0)

                {

                nDays=29;

                }

                else

                {

                nDays=28;

                }

              break;

              default:

                nDays=30;

              break;

            }

            if(*nDate>nDays)

            {

              *nDate=1;

              (*nMonth)++;

              if(*nMonth>12)

              {

              *nMonth=1;

              (*nYear)++;

              }

            }

          }

        }

      }

    }

    /*示例可运行代码*/

    void main()

    {

      int nYear=2004,nMonth=12,nDate=31,nHour=59,nMinute=59,nSecond=59;

      NextMinute(&nYear,&nMonth,&nDate,&nHour,&nMinute,&nSecond);

      printf("The result:%d-%d-%d %d:%d:%d",nYear,nMonth,nDate,nHour,nMinute,nSecond);

    }

     

     


     

     


    华为硬件笔试题

    2006-09-30 13:01


    一 选择

    13个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理

    有关于

    1.微分电路

    2.CISC,RISC

    3.数据链路层

    二 填空

    10个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理

    有关于

    1.TIC6000 DSP

    2.二极管

    3.RISC

    4.IIR

    三 简答

    1.x(t)的傅立叶变换为X(jw)=$(w)+$(w-PI)+$(w-5)

    h(t)=u(t)-u(t-2)

    问: (1),x(t)是周期的吗?

    (2),x(t)*h(t)是周期的吗?

    (3),两个非周期的信号卷积后可周期吗?

    2.简述分组交换的特点和不足

    四 分析设计

    1.波形变换题目

    从正弦波->方波->锯齿波->方波,设计电路

    2.74161计数器组成计数电路,分析几进制的

    3.用D触发器构成2分频电路

    4.判断MCS-51单片机的指令正确还是错误,并指出错误原因

    (1) MUL R0,R1

    (2) MOV A,@R7

    (3) MOV A,#3000H

    (4) MOVC @A+DPTR,A

    (5) LJMP #1000H ()

    5.MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率

    MOV TMOD,#01H

    SETB TR0

    LOOP:MOV TH0,#0B1H

    MOV TL0,#0E0H

    LOOP1:JNB TF0,LOOP1

    CLR TR0

    CPL P1.0

    SJMP LOOP

     


     

     

     

    华为硬件面试题

    2006-09-30 13:02


      全都是几本模电数电信号单片机题目

      1.用与非门等设计全加法器

      2.给出两个门电路让你分析异同

      3.名词:sram,ssram,sdram

      4.信号与系统:在时域与频域关系

      5.信号与系统:和4题差不多

      6.晶体振荡器,好像是给出振荡频率让你求周期(应该是单片机的,12分之一周期..

      ..)

      7.串行通信与同步通信异同,特点,比较

      8.RS232c高电平脉冲对应的TTL逻辑是?(负逻辑?)

      9.延时问题,判错

      10.史密斯特电路,求回差电压

      11.VCO是什么,什么参数(压控振荡器?)

      12. 用D触发器做个二分颦的电路.又问什么是状态图

      13. 什么耐奎斯特定律,怎么由模拟信号转为数字信号

      14. 用D触发器做个4进制的计数

      15.那种排序方法最快?

      一、 研发(软件)

      用C语言写一个递归算法求N!;

      给一个C的函数,关于字符串和数组,找出错误;

      防火墙是怎么实现的?

      你对哪方面编程熟悉?

     

    硬件:

    1、继电器控制电路。

    2、SDRAM是怎么工作的

    3、写出逻辑表达式说明A2A1A0大于B2B1B0。

    4、常用触发器有几种

    5、示波器有几种触发方式,举出三种

     


     

     

     

    华为3COM数据通信工程师试题

    2006-09-29 18:53


    1 H.323协商

    答案:12个包协商,先H225然后H245,需要注意的是面试官可能会问到跟SIP的比较

    2 ipsec为什么是三层的。L2tp为什么是二层的?

    答案:IPSec (Internet 协议安全)是一个工业标准网络安全协议,为 IP 网络通信提供透明的安全服务,保护 TCP/IP 通信免遭窃听和篡改,可以有效抵御网络攻击,同时保持易用性。IPSec有两个基本目标:1)保护IP数据包安全;2)为抵御网络攻击提供防护措施。

    第三层保护的优点

      通常IPSec提供的保护需要对系统做一定的修改。但是IPSec在IP传输层即第三层的"策略执行"(strategic implementation)几乎不需要什么额外开销就可以实现为绝大多数应用系统、服务和上层协议提供较高级别的保护;为现有的应用系统和操作系统配置IPSec几乎无须做任何修改,安全策略可以在Active Directory里集中定义也可以在某台主机上进行本地化管理。

      IPSec策略在ISO参考模型第三层即网络层上实施的安全保护,其范围几乎涵盖了TCP/IP协议簇中所有IP协议和上层协议,如TCP、UDP、ICMP,Raw(第255号协议)、甚至包括在网络层发送数据的客户自定义协议。在第三层上提供数据安全保护的主要优点就在于:所有使用IP协议进行数据传输的应用系统和服务都可以使用IPSec,而不必对这些应用系统和服务本身做任何修改。

      运作于第三层以上的其他一些安全机制,如安全套接层SSL,仅对知道如何使用SSL的应用系统(如Web浏览器)提供保护,这极大地限制了SSL的应用范围;而运作于第三层以下的安全机制,如链路层加密,通常只保护了特定链路间的数据传输,而无法做到在数据路径所经过的所有链路间提供安全保护,这使得链接层加密无法适用于 Internet 或路由 Intranet 方案中的端对端数据保护。

    L2TP(第二层隧道协议)通过使用虚拟专用网 (VPN) 连接和第二层隧道协议 (L2TP),可以通过 Internet 或其他公共网络访问专用网。L2TP 是一个工业标准 Internet 隧道协议,它和点对点隧道协议 (PPTP) 的功能大致相同。

    利用L2TP来构建企业的VPN,一样需要运营商支持,因为LAC一般是在传统电话交换网络中部署的,并且一个公司的分支机构以及移动办公的员工在地域上分布很广,所以需要各地的运营商都具备LAC才能够实现企业大范围构建VPN网络。当然企业也可以构建自己的基于L2TP的VPN网络在L2TP VPN中,用户端的感觉就像是利用PPP协议直接接到了企业总部的PPP端接设备上一样,其地址分配可以由企业通过DHCP来分配,认证方式可以沿用PPP一直沿用的各种认证方式,并且L2TP是IETF定义的,其MIB库也将定义出来从而可以实现全局的网络管理。

    3 ospf中包的ttl值是多少?

    答案:1,因为224.0.0.5/224.0.0.6是本地链路组播

    4 OSPF为什么要划分区域?

    答案:RD用于BGP区分VPN路由,RT用于在各VRF中导入或导出路由

    5 MPLS VPN的标签一共有几层。内网的标签放在哪里。

    答案:如果没有流量工程则是2层,内网标签在隧道标签之后

    6 MPLS中RD和RT的作用分别是什么?

    答案:减少CPU负载,区域间使用距离矢量算法,因此其它区域的泛洪不会影响区域的SPF运算,这里注意面试官可能会问OSPF多区域如何防止环路。(注意答本质而不是现象,免得面试官追问)

    7 RR防止环路的机制。

    答案:RR中通过ORIGIN ID和CLUSTER ID防止环路,若RR收到带有自己CLUSTER ID的路由则丢弃

    8 BGP控制out-bound用local-pre,控制进来的用med.

    答案:正确

    9 ospf是工作在哪个协议上的?

    答案:IP,OSPF协议号89

    10 ospf的LSA类型。

    答案:1,2,3,4,5,6,7,没有什么好说的,注意考官问到第6类LSA,组播再准备多点

    11 简述OSPF的基本工作机制。

    答案:这个没什么可以说了,把知道的都说出来就行了

    12 ppp的lcp和ncp协商过程。

    答案:LCP过程协商二层链路相关参数,MTU/PPP压缩/认证协议类型等~~~NCP协商第三层协议,IP地址,IP压缩等等,这里记住最好不要说CDP

    13 笔试中还有一道PSTN的信令控制有哪三种?

    答案:这个我只知道随路信令和共路信令,信工同学提供的答案是:监视\号码\音信号\,知道正确答案的朋友麻烦纠正一下

    14sloari 8.0查看进程的命令是什么?linux 7.3查看IP的命令是什么?

    答案:不知道华为为什么问这个,第一个是PS吧?第二个是IFCONFIG /A

    15 IP是5.32.0.0,掩码255.224.0.0。请问最大的有效地址是多少。

    答案:最大主机地址5。64。255。254

    17 lx/lh的有效距离是多少?

    答案:???

    18 IP 包头几个字节?加上数据部分几个字节

    答案:应该是问IPV4,一般20字节,加上源路由选择等后最大60字节,加上数据部分还是根据链路MTU决定

    20 CQ能不能有一种流量dominate第二种流量?

    答案:CQ不能有一种流量DOMINATE其它任何流量

    21 FTP下载一个文件完成。有几个TCP连接

    答案:4个


    3.请问C++的类和C里面的struct有什么区别?
    答:struct的成员的默认访问说明符为Public,而class的成员的默认访问说明符为Private。其他没有区别
    4.请讲一讲析构函数和虚函数的用法和作用。
    答:析构函数是在对象生存期结束时自动调用的函数,用来释放在构造函数分配的内存。
    虚函数是指被关键字virtual说明的函数,作用是使用C++语言的多态特性
    5.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
    答:一些变量在整个程序中都是可见的,它们称为全局变量。一些变量只能在一个函数中可知,称为局部变量。这就是他们的区别。
    在任何函数外面定义的变量就是全局变量,在函数内部定义的变量是局部变量,这是它们在程序中的实现过程。
    操作系统和编译器是根据程序运行的内存区域知道他们的,程序的全局数据放在所分配内存的全局数据区,程序的局部数据放在栈区。
    6。有1,2,3,4,,,,n个数放在一个数组里,按大小排序,输出。 d Y t f#q9v B

    7。写一个算法,将一个数按高位到低位逆转,例如,用户输入123,则输出321。 v _ k0^ X+M f
    初始的数据放入n,结果放入m
    m=0;/o K f v9B
    while(n>0)3o4F k)W%w6]^ V a+B
    {
    m=m*10+(n mod 10);
    n=n\10;//整除/M'\;F7A R(V
    }/|+.L g.} a8E Z'c
    8。抽象类和接口的区别是什么?
    (1)接口可以被多重implements,抽象类只能被单一extends
    (2)接口只有定义,抽象类可以有定义和实现
    (3)接口的字段定义默认为:public static final, 抽象类字段默认是"friendly"

  • 华为

    2008-08-07 13:54:17

    华为软件测试工程师面试题
    2007-11-04 19:44:26

    1:请你分别划OSI的七层网络结构图,和TCP/IP的五层结构图?
    http://www.kaiguandianqi.com/pic/paper/paper_20_1.gif
    http://www.vlan9.com/ArtImage/20051016/2005101629_1.jpg
    OSI的七层网络结构图,和TCP/IP的五层结构图
    OSI
    OSI是Open System Interconnect的缩写,意为开放式系统互联。在OSI出现之前,计算机网络中存在众多的体系结构,其中以IBM公司的SNA(系统网络体系结构)和DEC公司的DNA(Digital Network Architecture)数字网络体系结构最为著名。为了解决不同体系结构的网络的互联问题,国际标准化组织ISO(注意不要与OSI搞混))于1981年制定了开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM)。这个模型把网络通信的工作分为7层,它们由低到高分别是物理层(Physical Layer),数据链路层(Data Link Layer),网络层(Network Layer),传输层(Transport Layer),会话层(Session Layer),表示层(Presen tation Layer)和应用层(Application Layer)。第一层到第三层属于OSI参考模型的低三层,负责创建网络通信连接的链路;第四层到第七层为OSI参考模型的高四层,具体负责端到端的数据通信。每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持,而网络通信则可以自上而下(在发送端)或者自下而上(在接收端)双向进行。当然并不是每一通信都需要经过OSI的全部七层,有的甚至只需要双方对应的某一层即可。物理接口之间的转接,以及中继器与中继器之间的连接就只需在物理层中进行即可;而路由器与路由器之间的连接则只需经过网络层以下的三层即可。总的来说,双方的通信是在对等层次上进行的,不能在不对称层次上进行通信。

    OSI参考模型的各个层次的划分遵循下列原则:

    1、同一层中的各网络节点都有相同的层次结构,具有同样的功能。

    2、同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。

    3、七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。

    4、不同节点的同等层按照协议实现对等层之间的通信。

    第一层:物理层(PhysicalLayer),规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。具体地讲,机械特性规定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小、阻抗匹配、传输速率距离限制等;功能特性是指对各个信号先分配确切的信号含义,即定义了DTE和DCE之间各个线路的功能;规程特性定义了利用信号线进行bit流传输的一组操作规程,是指在物理连接的建立、维护、交换信息是,DTE和DCE双放在各电路上的动作系列。

    在这一层,数据的单位称为比特(bit)。

    属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

    第二层:数据链路层(DataLinkLayer):在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。  

    数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

    在这一层,数据的单位称为帧(frame)。

    数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。

    第三层是网络层

    在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。

    如果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地址解析协议(ARP)。有关路由的一切事情都在第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。

    在这一层,数据的单位称为数据包(packet)。

    网络层协议的代表包括:IP、IPX、RIP、OSPF等。

    第四层是处理信息的传输层。第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段(segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通信过程中传输层对上层屏蔽了通信传输系统的具体细节。

    传输层协议的代表包括:TCP、UDP、SPX等。

    第五层是会话层

    这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。

    第六层是表示层

    这一层主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。

    第七层应用层,应用层为操作系统或网络应用程序提供访问网络服务的接口。

    应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。

      通过 OSI 层,信息可以从一台计算机的软件应用程序传输到另一台的应用程序上。例如,计算机 A 上的应用程序要将信息发送到计算机 B 的应用程序,则计算机 A 中的应用程序需要将信息先发送到其应用层(第七层),然后此层将信息发送到表示层(第六层),表示层将数据转送到会话层(第五层),如此继续,直至物理层(第一层)。在物理层,数据被放置在物理网络媒介中并被发送至计算机 B 。计算机 B 的物理层接收来自物理媒介的数据,然后将信息向上发送至数据链路层(第二层),数据链路层再转送给网络层,依次继续直到信息到达计算机 B 的应用层。最后,计算机 B 的应用层再将信息传送给应用程序接收端,从而完成通信过程。下面图示说明了这一过程。

      OSI 的七层运用各种各样的控制信息来和其他计算机系统的对应层进行通信。这些控制信息包含特殊的请求和说明,它们在对应的 OSI 层间进行交换。每一层数据的头和尾是两个携带控制信息的基本形式。

      对于从上一层传送下来的数据,附加在前面的控制信息称为头,附加在后面的控制信息称为尾。然而,在对来自上一层数据增加协议头和协议尾,对一个 OSI 层来说并不是必需的。

      当数据在各层间传送时,每一层都可以在数据上增加头和尾,而这些数据已经包含了上一层增加的头和尾。协议头包含了有关层与层间的通信信息。头、尾以及数据是相关联的概念,它们取决于分析信息单元的协议层。例如,传输层头包含了只有传输层可以看到的信息,传输层下面的其他层只将此头作为数据的一部分传递。对于网络层,一个信息单元由第三层的头和数据组成。对于数据链路层,经网络层向下传递的所有信息即第三层头和数据都被看作是数据。换句话说,在给定的某一 OSI 层,信息单元的数据部分包含来自于所有上层的头和尾以及数据,这称之为封装。

      例如,如果计算机 A 要将应用程序中的某数据发送至计算机 B ,数据首先传送至应用层。 计算机 A 的应用层通过在数据上添加协议头来和计算机 B 的应用层通信。所形成的信息单元包含协议头、数据、可能还有协议尾,被发送至表示层,表示层再添加为计算机 B 的表示层所理解的控制信息的协议头。信息单元的大小随着每一层协议头和协议尾的添加而增加,这些协议头和协议尾包含了计算机 B 的对应层要使用的控制信息。在物理层,整个信息单元通过网络介质传输。

      计算机 B 中的物理层收到信息单元并将其传送至数据链路层;然后 B 中的数据链路层读取计算机 A 的数据链路层添加的协议头中的控制信息;然后去除协议头和协议尾,剩余部分被传送至网络层。每一层执行相同的动作:从对应层读取协议头和协议尾,并去除,再将剩余信息发送至上一层。应用层执行完这些动作后,数据就被传送至计算机 B 中的应用程序,这些数据和计算机 A 的应用程序所发送的完全相同 。

      一个 OSI 层与另一层之间的通信是利用第二层提供的服务完成的。相邻层提供的服务帮助一 OSI 层与另一计算机系统的对应层进行通信。一个 OSI 模型的特定层通常是与另外三个 OSI 层联系:与之直接相邻的上一层和下一层,还有目标联网计算机系统的对应层。例如,计算机 A 的数据链路层应与其网络层,物理层以及计算机 B 的数据链路层进行通信
    
    2:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?
    
    3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?
    
    4:请问C++的类和C里面的struct有什么区别?
    
    5:请讲一讲析构函数和虚函数的用法和作用?
    
    6:全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?
    
    7:一些寄存器的题目,主要是寻址和内存管理等一些知识。
    
    8:8086是多少尉的系统?在数据总线上是怎么实现的?
    
    軟件測試的各階段!

    面试就是跟你聊聊工作,看经验了
    笔试,看看数据结构,二叉树,排序,什么的

    可能会考多线程


    交换的基础协议

    1.软件测试对应开发流程各阶段应该怎么样划分?单元测试,集成测试,系统测试各对应与开发流程的那几个文档?
    2.压力测试和性能测试的区别?

    switch(n)中的n不能是以下那种类型  A char B int C unsigned D double

     

    华为全套面试题
    华为全套面试题(基础版)


    (一)

    慧通:

    1。什么是预编译,何时需要预编译:

    答案:1、总是使用不经常改动的大型代码体。

    2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

    2。  char * const p

         char const * p

         const char *p

    上述三个有什么区别?

    答案:

    char * const p; //常量指针,p的值不可以修改

    char const * p;//指向常量的指针,指向的常量值不可以改

    const char *p; //和char const *p

     

    3。char str1[] = "abc";

    char str2[] = "abc";

    const char str3[] = "abc";

    const char str4[] = "abc";

    const char *str5 = "abc";

    const char *str6 = "abc";

    char *str7 = "abc";

    char *str8 = "abc";

    cout << ( str1 == str2 ) << endl;

    cout << ( str3 == str4 ) << endl;

    cout << ( str5 == str6 ) << endl;

    cout << ( str7 == str8 ) << endl;

    结果是:0 0 1 1

    str1,str2,str3,str4是数组变量,它们有各自的内存空间;

    而str5,str6,str7,str8是指针,它们指向相同的常量区域。

    4。 以下代码中的两个sizeof用法有问题吗?[C易]

    void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母

    {

        for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )

            if( 'a'<=str[i] && str[i]<='z' )

                str[i] -= ('a'-'A' );

    }

    char str[] = "aBcDe";

    cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;

    UpperCase( str );

    cout << str << endl;

    答案:函数内的sizeof有问题。根据语法,sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。函数外的str是一个静态定义的数组,因此其大小为6,因为还有'\0',函数内的str实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4。

     

    5。一个32位的机器,该机器的指针是多少位

    答案:指针是多少位只要看地址总线的位数就行了。80386以后的机子都是32的数据总线。所以指针的位数就是4个字节了。

     

    6。main()

    {

      int a[5]={1,2,3,4,5};

       int *ptr=(int *)(&a+1);

       printf("%d,%d",*(a+1),*(ptr-1));

    }

    答案:2。5

    *(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5

    &a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)

    int *ptr=(int *)(&a+1);

    则ptr实际是&(a[5]),也就是a+5

    原因如下:

    &a是数组指针,其类型为 int (*)[5];

    而指针加1要根据指针类型加上一定的值,

    不同类型的指针+1之后增加的大小不同

    a是长度为5的int数组指针,所以要加 5*sizeof(int)

    所以ptr实际是a[5]

    但是prt与(&a+1)类型是不一样的(这点很重要)

    所以prt-1只会减去sizeof(int*)

    a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].

    7。请问以下代码有什么问题:

    int  main()

    {

    char a;

    char *str=&a;

    strcpy(str,"hello");

    printf(str);

    return 0;

    }

    答案:没有为str分配内存空间,将会发生异常

    问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。

     

    8。char* s="AAA";

    printf("%s",s);

    s[0]='B';

    printf("%s",s);

    有什么错?

    答案:"AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。

    cosnt char* s="AAA";

    然后又因为是常量,所以对是s[0]的赋值操作是不合法的。

    9。写一个“标准”宏,这个宏输入两个参数并返回较小的一个。

    答案:.#define Min(X, Y) ((X)>(Y)?(Y):(X))  //结尾没有‘;’

     

    10。嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。

    答案:while(1){}或者for(;;)

     

    11。关键字static的作用是什么?

    答案:定义静态变量

     

    12。关键字const有什么含意?

    答案:表示常量不可以修改的变量。

     

    13。关键字volatile有什么含意?并举出三个不同的例子?

    答案:提示编译器对象的值可能在编译器未监测到的情况下改变。

    14。int (*s[10])(int) 表示的是什么啊?

    答案:int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。

    15。有以下表达式:

    int a=248; b=4;int const c=21;const int *d=&a;

    int *const e=&b;int const *f const =&a;

    请问下列表达式哪些会被编译器禁止?为什么?

    答案:*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;

    *c 这是个什么东东,禁止

    *d 说了是const, 禁止

    e = &a 说了是const 禁止

    const *f const =&a; 禁止

    16交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3;

    答案:有两种解法, 一种用算术算法, 一种用^(异或)

    a = a + b;

    b = a - b;

    a = a - b;

    or

    a = a^b;// 只能对int,char..

    b = a^b;

    a = a^b;

    or

    a ^= b ^= a;

    17.c和c++中的struct有什么不同?

    答案:c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private

    18.#include <stdio.h>

      #include <stdlib.h>

      void getmemory(char *p)

      {

        p=(char *) malloc(100);

        strcpy(p,"hello world");

      }

      int main( )

      {

        char *str=NULL;

        getmemory(str);

        printf("%s/n",str);

        free(str);

        return 0;

       }

    答案:程序崩溃,getmemory中的malloc 不能返回动态内存, free()对str操作很危险

    19.char szstr[10];

      strcpy(szstr,"0123456789");

      产生什么结果?为什么?

    答案:  长度不一样,会造成非法的OS

    20.列举几种进程的同步机制,并比较其优缺点。

    答案:   原子操作

    信号量机制

       自旋锁

       管程,会合,分布式系统

     

    21.进程之间通信的途径

    答案:共享存储系统

    消息传递系统

    管道:以文件系统为基础

    22.进程死锁的原因

    答案:资源竞争及进程推进顺序非法

    23.死锁的4个必要条件

    答案:互斥、请求保持、不可剥夺、环路

     

    24.死锁的处理

    答案:鸵鸟策略、预防策略、避免策略、检测与解除死锁

     

    25.   操作系统中进程调度策略有哪几种?

    答案:FCFS(先来先服务),优先级,时间片轮转,多级反馈

     

    26.类的静态成员和非静态成员有何区别?

    答案:类的静态成员每个类只有一个,非静态成员每个对象一个

     

    27.纯虚函数如何定义?使用时应注意什么?

    答案:virtual void f()=0;

    是接口,子类必须要实现

     

    28.数组和链表的区别

    答案:数组:数据顺序存储,固定大小

    连表:数据可以随机存储,大小可动态改变

     

    29.ISO的七层模型是什么?tcp/udp是属于哪一层?tcp/udp有何优缺点?

    答案:应用层

    表示层

    会话层

    运输层

    网络层

    物理链路层

    物理层

    tcp /udp属于运输层

    TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。

    与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。

    tcp: 提供稳定的传输服务,有流量控制,缺点是包头大,冗余性不好

    udp: 不提供稳定的服务,包头小,开销小  

    30:(void *)ptr 和 (*(void**))ptr的结果是否相同?其中ptr为同一个指针

    答案:.(void *)ptr 和 (*(void**))ptr值是相同的

    31:int main()

       {

        int x=3;

        printf("%d",x);

        return 1;

      

       }

    问函数既然不会被其它函数调用,为什么要返回1?

    答案:mian中,c标准认为0表示成功,非0表示错误。具体的值是某中具体出错信息

    32,要对绝对地址0x100000赋值,我们可以用

    (unsigned int*)0x100000 = 1234;

    那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?

    答案:*((void (*)( ))0x100000 ) ( );

    首先要将0x100000强制转换成函数指针,即:

    (void (*)())0x100000

    然后再调用它:

    *((void (*)())0x100000)();

    用typedef可以看得更直观些:

    typedef void(*)() voidFuncPtr;

    *((voidFuncPtr)0x100000)();

    33,已知一个数组table,用一个宏定义,求出数据的元素个数

    答案:#define NTBL

    #define NTBL (sizeof(table)/sizeof(table[0]))

     

    34。线程与进程的区别和联系? 线程是否具有相同的堆栈? dll是否有独立的堆栈?

    答案:进程是死的,只是一些资源的集合,真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程。

    每个线程有自己的堆栈。

    DLL中有没有独立的堆栈,这个问题不好回答,或者说这个问题本身是否有问题。因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈,如果DLL中的代码是EXE中的线程所调用,那么这个时候是不是说这个DLL没有自己独立的堆栈?如果DLL中的代码是由DLL自己创建的线程所执行,那么是不是说DLL有独立的堆栈?

    以上讲的是堆栈,如果对于堆来说,每个DLL有自己的堆,所以如果是从DLL中动态分配的内存,最好是从DLL中删除,如果你从DLL中分配内存,然后在EXE中,或者另外一个DLL中删除,很有可能导致程序崩溃

    35。unsigned short A = 10;

    printf("~A = %u\n", ~A);

    char c=128;

    printf("c=%d\n",c);

    输出多少?并分析过程

    答案:第一题,~A =0xfffffff5,int值 为-11,但输出的是uint。所以输出4294967285

    第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以输出-128。

    这两道题都是在考察二进制向int或uint转换时的最高位处理。

     

    (二)

    1. -1,2,7,28,,126请问28和126中间那个数是什么?为什么?

    答案:第一题的答案应该是4^3-1=63

    规律是n^3-1(当n为偶数0,2,4)

          n^3+1(当n为奇数1,3,5)

    2.用两个栈实现一个队列的功能?要求给出算法和思路!

    答案:设2个栈为A,B, 一开始均为空.

    入队:

    将新元素push入栈A;

    出队:

    (1)判断栈B是否为空;

    (2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;

    (3)将栈B的栈顶元素pop出;

    这样实现的队列入队和出队的平摊复杂度都还是O(1), 比上面的几种方法要好。

     

    3.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?

    答案:函数名: atol

    功 能: 把字符串转换成长整型数

    用 法: long atol(const char *nptr);

    程序例:

    #include <stdlib.h>

    #include <stdio.h>

    int main(void)

    {

    long l;

    char *str = "98765432";

    l = atol(lstr);

    printf("string = %s integer = %ld\n", str, l);

    return(0);

    }

     

    4。对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

    答案:c用宏定义,c++用inline

    5。直接链接两个信令点的一组链路称作什么?

    答案:PPP点到点连接

     

    7。软件测试都有那些种类?

    答案:黑盒:针对系统功能的测试    白合:测试函数功能,各函数接口

    8。确定模块的功能和模块的接口是在软件设计的那个队段完成的?

    答案:概要设计阶段

     

    9。enum string

        {

        x1,

        x2,

        x3=10,

        x4,

        x5,

        }x;

       问x;

    答案:取值在0。1。10。11。12中的一个

     

    10。unsigned char *p1;

        unsigned long *p2;

        p1=(unsigned char *)0x801000;

        p2=(unsigned long *)0x810000;

        请问p1+5=  ;

            p2+5=  ;

    答案:801005; 810014。不要忘记了这个是16进制的数字,p2要加20变为16进制就是14

    选择题:

      1.Ethternet链接到Internet用到以下那个协议?

      A.HDLC;B.ARP;C.UDP;D.TCP;E.ID

      2.属于网络层协议的是:

      A.TCP;B.IP;C.ICMP;D.X.25

      3.Windows消息调度机制是:

      A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈;

    答案:b,a,c

    四.找错题:

      1.请问下面程序有什么错误?

       int a[60][250][1000],i,j,k;

       for(k=0;k<=1000;k++)

        for(j=0;j<250;j++)

         for(i=0;i<60;i++)

          a[i][j][k]=0;

    答案:把循环语句内外换一下

    2。以下是求一个数的平方的程序,请找出错误:

        #define SQUARE(a)  ((a)*(a))

        int a=5;

        int b;

        b=SQUARE(a++);

    答案:这个没有问题,s(a++),就是((a++)×(a++))唯一要注意的就是计算后a=7了

    3。typedef unsigned char BYTE

         int examply_fun(BYTE gt_len; BYTE *gt_code)

          { 

          BYTE *gt_buf;

          gt_buf=(BYTE *)MALLOC(Max_GT_Length);

          ......

          if(gt_len>Max_GT_Length)

            {

            return GT_Length_ERROR; 

            }

            .......

          }

    答案:要释放内存

     

    问答题:

    1.IP Phone的原理是什么?

    答案:IPV6

    2.TCP/IP通信建立的过程怎样,端口有什么作用?

    答案:三次握手,确定是哪个应用程序使用该协议

     

    (三)

    1、局部变量能否和全局变量重名?

    答案:能,局部会屏蔽全局。要用全局变量,需要使用"::"

    局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内

    2、如何引用一个已经定义过的全局变量?

    答案:extern

    可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错

    3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

    答案:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错

    4、语句for( ;1 ;)有什么问题?它是什么意思?

    答案:和while(1)相同。

    5、do……while和while……do有什么区别?

    答案:前一个循环一遍再判断,后一个判断以后再循环。

    6、请写出下列代码的输出内容

    #include<stdio.h>

    main()

    {

    int a,b,c,d;

    a=10;

    b=a++;

    c=++a;

    d=10*a++;

    printf("b,c,d:%d,%d,%d",b,c,d);

    return 0;

    }

    答案:10,12,120

     a=10;

     b=a++;//a=11 b=10

     c=++a;//a=12 c=12

     d=10*a++;//a=13 d=120

    高级题

    1、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

    答案:

    全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

    而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

    static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

    static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

    static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

    static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

    2、程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于( )中。

    答案:栈;静态区;堆

    3、设有以下说明和定义:

    typedef union {long i; int k[5]; char c;} DATE;

    struct data { int cat; DATE cow; double dog;} too;

    DATE max;

    则语句 printf("%d",sizeof(too)+sizeof(max));的执行结果是:______

    答案:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20

    data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.

    所以结果是 20 + 32 = 52.

    当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20

    4、队列和栈有什么区别?

    答案:队列先进先出,栈后进先出÷

    5、这道题目出错了,这里就不写上了。

    6、已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此结点,然后删除。

    答案:slnodetype *Delete(slnodetype *Head,int key){}中if(Head->number==key)

    {

    Head=Pointer->next;

    free(Pointer);

    break;

    }

    Back = Pointer;

            Pointer=Pointer->next;

    if(Pointer->number==key)

    {

                Back->next=Pointer->next;

    free(Pointer);

    break;

    }

    void delete(Node* p)

    {

        if(Head = Node)

        while(p)

    }

    7、请找出下面代码中的所以错误

    说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

    1、#include"string.h"

    2、main()

    3、{

    4、 char*src="hello,world";

    5、 char* dest=NULL;

    6、 int len=strlen(src);

    7、 dest=(char*)malloc(len);

    8、 char* d=dest;

    9、 char* s=src[len];

    10、 while(len--!=0)

    11、 d++=s--;

    12、 printf("%s",dest);

    13、 return 0;

    14、}

    答案:还要加上#include <stdio.h>

    int main(){

    char* src = "hello,world";

    int len = strlen(src);

    char* dest = (char*)malloc((len+1)*sizeof(char));  //要为\0分配一个空间

    char* d = dest;

    char* s = &src[len-1]; //指向最后一个字符

    while( len-- != 0 )

    *d++=*s--;

    *d = 0; //尾部要加\0

    printf("%s\n",dest);

    free(dest);// 使用完,应当释放空间,以免造成内存汇泄露

    return 0;

    }

     

     

    华为笔试题(3)

    2006-09-29 19:41


    一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)

    1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。(    正确 )

    2、int (*ptr) (),则ptr是一维数组的名字。( 错误  int (*ptr) ();定义一个指向函数的指针变量    )

    3、指针在任何情况下都可进行>,<,>=,<=,==运算。(   错误  )

    4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。(  错,不能用实形 )

    二、填空题(共30分)

    1、在windows下,写出运行结果,每空2分,共10分。

    char str[ ]= "Hello";

    char *p=str;

    int n=10;

    sizeof(str)=(      )

    sizeof(p)=(       )

    sizeof(n)=(       )

    void func(char str[100]){    }

    sizeof(str)=(     )

     答案:6,4,4,4, 具体解释请参看我的空间里的“C/C++程序员应聘试题剖析”

    2、void getmemory(char **p, int num)

    { *p=(char *) malloc(num);}

    void test(void)

    {  char *str=NULL;

       getmemory(&str,100);

       strcpy(str,"hello");

       printf(str);

    }

    运行test函数有什么结果?(                                )10分

     答案:输出hello,但是发生内存泄漏。

    3、设int arr[]={6,7,8,9,10};

         int *ptr=arr;

       *(ptr++)+=123;

     printf("%d,%d",*ptr,*(++ptr));

    (                                   ) 10分

    答案:8,8。这道题目的意义不大,因为在不同的编译器里printf的参数的方向是不一样的,在vc6.0下是从有到左,这里先*(++ptr) 后*pt,于是结果为8,8

    二、编程题(第一小题20,第二小题30分)

    1、  不使用库函数,编写函数int strcmp(char  *source, char *dest)

    相等返回0,不等返回-1;

    答案:一、

    int strcmp(char  *source, char *dest)

    {

     assert((source!=NULL)&&(dest!=NULL));

     int i,j;

     for(i=0; source[i]==dest[i]; i++)

     {

      if(source[i]=='\0' && dest[i]=='\0')

       return 0;

      else

       return -1;

     }

    }

    答案:二、

    int strcmp(char *source, char *dest)

    {

        while ( (*source != '\0') && (*source == *dest))

        {

    source++;

    dest++;

        }

        return ( (*source) - (*dest) ) ? -1 : 0;

    }

    2、  写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1

    答案:一、

    int fun(char *p)

    {

     if(p==NULL)

      return -1;

     else

     {

      int length = 0;

      int i = 0;

      int judge = 1;

      length = strlen(p);

      for(i=0; i<length/2; i++)

      {

       if(p[i]!=p[length-1-i])

        judge = 0;

       break;

      }

      if(judge == 0)

       return 0;

      else

       return 1;

     }

    }

    答案:二、

    int fun(char *p){ int len = strlen(p) - 1; char *q = p + len; if (!p) return -1; while (p < q) { if ((*p++) != (*q--)) return 0; } return 1;}

     

    华为笔试网络题(3)

    2006-09-30 12:48


    1.在OSI 7 层模型中,网络层的功能有( )

    A.确保数据的传送正确无误   B.确定数据包如何转发与路由

    C.在信道上传送比特流    D.纠错与流控

    2.FDDI 使用的是___局域网技术。( )

    A.以太网;    B.快速以太网;    C.令牌环;    D.令牌总线。

    3.下面那种LAN 是应用CSMA/CD协议的 ()

    A.令牌环    B.FDDI    C.ETHERNET    D.NOVELL

    4.TCP 和UDP 协议的相似之处是 ( )

    A.面向连接的协议    B.面向非连接的协议    C.传输层协议    D.以上均不对

    5.应用程序PING 发出的是___报文.( )

    A.TCP 请求报文。    B.TCP 应答报文。    C.ICMP 请求报文。   D.ICMP 应答报文。

    6.以下说法错误的是(多) ( )

    A.中继器是工作在物理层的设备    B.集线器和以太网交换机工作在数据连路层

    C.路由器是工作在网络层的设备     D.桥能隔离网络层广播

    7.当桥接收的分组的目的MAC地址在桥的映射表中没有对应的表项时,采取的策略是( )

    A.丢掉该分组   B.将该分组分片    C.向其他端口广播该分组    D.以上答案均不对

    8.LAN Switch 在网络层次模型中的地位( )

    A.物理层    B.链路层    C.网络层    D.以上都不是

    9.小于___的TCP/UDP端口号已保留与现有服务一一对应,此数字以上的端口号可自由分配。( )

    A.199      B.100     C.1024      D.2048

    10.当一台主机从一个网络移到另一个网络时,以下说法正确的是 ( )

    A.必须改变它的IP 地址和MAC 地址    B.必须改变它的IP 地址,但不需改动MAC 地址

    C.必须改变它的MAC 地址,但不需改动IP 地址    D.MAC 地址.IP 地址都不需改动

    答案:1.B; 2.C; 3.C; 4.C; 5.C; 6.BD; 7.C; 8.B; 9.C; 10.B.

     


     

    华为笔试题(4)

    2006-09-30 13:00


    1. 找错

    void test1()

    {

        char string[10];

        char* str1="0123456789";

        strcpy(string, str1);

    }

    答:表面上并且编译都不会错误。但如果string数组原意表示的是字符串的话,那这个赋值就没有达到意图。最好定义为char string[11],这样最后一个元素可以存储字符串结尾符'\0';

    void test2()

    {

        char string[10], str1[10];

      for(int I=0; I<10;I++)

      {

        str1[I] ='a';

      }

      strcpy(string, str1);

    }

    答:strcpy使用错误,strcpy只有遇到字符串末尾的'\0'才会结束,而str1并没有结尾标志,导致strcpy函数越界访问,不妨让str1[9]='\0',这样就正常了。

    void test3(char* str1)

    {

        char string[10];

        if(strlen(str1)<=10)

    {

        strcpy(string, str1);

    }

    }

    答:这又会出现第一道改错题的错误了。strlen(str1)算出来的值是不包含结尾符'\0'的,如果str1刚好为10个字符+1结尾符,string就得不到结尾符了。可将strlen(str1)<=10改为strlen(str1)<10。

    2. 找错

    #define MAX_SRM 256

    DSN get_SRM_no()

    {

        static int SRM_no;

        int I;

        for(I=0;I<MAX_SRM;I++,SRM_no++)

      {

        SRM_no %= MAX_SRM;

        if(MY_SRM.state==IDLE)

        {

          break;

        }

      }

      if(I>=MAX_SRM)

        return (NULL_SRM);

      else

        return SRM_no;

    }

    答:我不知道这段代码的具体功能,但明显有两个错误

    1,SRM_no没有赋初值

    2,由于static的声明,使该函数成为不可重入(即不可预测结果)函数,因为SRM_no变量放在程序的全局存储区中,每次调用的时候还可以保持原来的赋值。这里应该去掉static声明。

    3. 写出程序运行结果

    int sum(int a)

    {

        auto int c=0;

        static int b=3;

      c+=1;

      b+=2;

      return(a+b+c);

    }

     void main()

    {

        int I;

      int a=2;

      for(I=0;I<5;I++)

      {

        printf("%d,", sum(a));

      }

    }

    答:8,10,12,14,16

    该题比较简单。只要注意b声明为static静态全局变量,其值在下次调用时是可以保持住原来的赋值的就可以。


    4.

    int func(int a)

    {

        int b;

        switch(a)

        {

            case 1: b=30;

            case 2: b=20;

            case 3: b=16;

            default: b=0;

       }

       return b;

    }

    则func(1)=?

    答:func(1)=0,因为没有break语句,switch中会一直计算到b=0。这是提醒我们不要忘了break。呵呵。

    5:

      int a[3];

      a[0]=0; a[1]=1; a[2]=2;

      int *p, *q;

      p=a;

      q=&a[2];

    则a[q-p]=?

    答:a[q-p]=a[2]=2;这题是要告诉我们指针的运算特点

    6.

    定义 int **a[3][4], 则变量占有的内存空间为:_____

    答:此处定义的是指向指针的指针数组,对于32位系统,指针占内存空间4字节,因此总空间为3×4×4=48。

    7.

    编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。

    答:

    /*输入年月日时分秒,输出年月日时分秒的下一秒,输出仍然在原内存空间*/

    void NextMinute(int *nYear,int *nMonth,int *nDate,int *nHour,int *nMinute,int *nSecond)

    {

      int nDays;

      (*nSecond)++;  // 秒加1

      if(*nSecond>=60)  // 秒满60,做出特殊处理,下面时,日,月等类同

      {

        *nSecond=0;

        (*nMinute)++;

        if(*nMinute>=60)

        {

          *nMinute=0;

          (*nHour)++;

          if(*nHour>=24)

          {

            *nHour=0;

            (*nDate)++;

            switch(*nMonth)

            {

              case 1:

              case 3:

              case 5:

              case 7:

              case 8:

              case 10:

              case 12:

                nDays=31;

              break;

              case 2:// 判断闰年

                if(*nYear%400==0||*nYear%100!=0&&*nYear%4==0)

                {

                nDays=29;

                }

                else

                {

                nDays=28;

                }

              break;

              default:

                nDays=30;

              break;

            }

            if(*nDate>nDays)

            {

              *nDate=1;

              (*nMonth)++;

              if(*nMonth>12)

              {

              *nMonth=1;

              (*nYear)++;

              }

            }

          }

        }

      }

    }

    /*示例可运行代码*/

    void main()

    {

      int nYear=2004,nMonth=12,nDate=31,nHour=59,nMinute=59,nSecond=59;

      NextMinute(&nYear,&nMonth,&nDate,&nHour,&nMinute,&nSecond);

      printf("The result:%d-%d-%d %d:%d:%d",nYear,nMonth,nDate,nHour,nMinute,nSecond);

    }

     

     


     

     


    华为硬件笔试题

    2006-09-30 13:01


    一 选择

    13个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理

    有关于

    1.微分电路

    2.CISC,RISC

    3.数据链路层

    二 填空

    10个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理

    有关于

    1.TIC6000 DSP

    2.二极管

    3.RISC

    4.IIR

    三 简答

    1.x(t)的傅立叶变换为X(jw)=$(w)+$(w-PI)+$(w-5)

    h(t)=u(t)-u(t-2)

    问: (1),x(t)是周期的吗?

    (2),x(t)*h(t)是周期的吗?

    (3),两个非周期的信号卷积后可周期吗?

    2.简述分组交换的特点和不足

    四 分析设计

    1.波形变换题目

    从正弦波->方波->锯齿波->方波,设计电路

    2.74161计数器组成计数电路,分析几进制的

    3.用D触发器构成2分频电路

    4.判断MCS-51单片机的指令正确还是错误,并指出错误原因

    (1) MUL R0,R1

    (2) MOV A,@R7

    (3) MOV A,#3000H

    (4) MOVC @A+DPTR,A

    (5) LJMP #1000H ()

    5.MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率

    MOV TMOD,#01H

    SETB TR0

    LOOP:MOV TH0,#0B1H

    MOV TL0,#0E0H

    LOOP1:JNB TF0,LOOP1

    CLR TR0

    CPL P1.0

    SJMP LOOP

     


     

     

     

    华为硬件面试题

    2006-09-30 13:02


      全都是几本模电数电信号单片机题目

      1.用与非门等设计全加法器

      2.给出两个门电路让你分析异同

      3.名词:sram,ssram,sdram

      4.信号与系统:在时域与频域关系

      5.信号与系统:和4题差不多

      6.晶体振荡器,好像是给出振荡频率让你求周期(应该是单片机的,12分之一周期..

      ..)

      7.串行通信与同步通信异同,特点,比较

      8.RS232c高电平脉冲对应的TTL逻辑是?(负逻辑?)

      9.延时问题,判错

      10.史密斯特电路,求回差电压

      11.VCO是什么,什么参数(压控振荡器?)

      12. 用D触发器做个二分颦的电路.又问什么是状态图

      13. 什么耐奎斯特定律,怎么由模拟信号转为数字信号

      14. 用D触发器做个4进制的计数

      15.那种排序方法最快?

      一、 研发(软件)

      用C语言写一个递归算法求N!;

      给一个C的函数,关于字符串和数组,找出错误;

      防火墙是怎么实现的?

      你对哪方面编程熟悉?

     

    硬件:

    1、继电器控制电路。

    2、SDRAM是怎么工作的

    3、写出逻辑表达式说明A2A1A0大于B2B1B0。

    4、常用触发器有几种

    5、示波器有几种触发方式,举出三种

     


     

     

     

    华为3COM数据通信工程师试题

    2006-09-29 18:53


    1 H.323协商

    答案:12个包协商,先H225然后H245,需要注意的是面试官可能会问到跟SIP的比较

    2 ipsec为什么是三层的。L2tp为什么是二层的?

    答案:IPSec (Internet 协议安全)是一个工业标准网络安全协议,为 IP 网络通信提供透明的安全服务,保护 TCP/IP 通信免遭窃听和篡改,可以有效抵御网络攻击,同时保持易用性。IPSec有两个基本目标:1)保护IP数据包安全;2)为抵御网络攻击提供防护措施。

    第三层保护的优点

      通常IPSec提供的保护需要对系统做一定的修改。但是IPSec在IP传输层即第三层的"策略执行"(strategic implementation)几乎不需要什么额外开销就可以实现为绝大多数应用系统、服务和上层协议提供较高级别的保护;为现有的应用系统和操作系统配置IPSec几乎无须做任何修改,安全策略可以在Active Directory里集中定义也可以在某台主机上进行本地化管理。

      IPSec策略在ISO参考模型第三层即网络层上实施的安全保护,其范围几乎涵盖了TCP/IP协议簇中所有IP协议和上层协议,如TCP、UDP、ICMP,Raw(第255号协议)、甚至包括在网络层发送数据的客户自定义协议。在第三层上提供数据安全保护的主要优点就在于:所有使用IP协议进行数据传输的应用系统和服务都可以使用IPSec,而不必对这些应用系统和服务本身做任何修改。

      运作于第三层以上的其他一些安全机制,如安全套接层SSL,仅对知道如何使用SSL的应用系统(如Web浏览器)提供保护,这极大地限制了SSL的应用范围;而运作于第三层以下的安全机制,如链路层加密,通常只保护了特定链路间的数据传输,而无法做到在数据路径所经过的所有链路间提供安全保护,这使得链接层加密无法适用于 Internet 或路由 Intranet 方案中的端对端数据保护。

    L2TP(第二层隧道协议)通过使用虚拟专用网 (VPN) 连接和第二层隧道协议 (L2TP),可以通过 Internet 或其他公共网络访问专用网。L2TP 是一个工业标准 Internet 隧道协议,它和点对点隧道协议 (PPTP) 的功能大致相同。

    利用L2TP来构建企业的VPN,一样需要运营商支持,因为LAC一般是在传统电话交换网络中部署的,并且一个公司的分支机构以及移动办公的员工在地域上分布很广,所以需要各地的运营商都具备LAC才能够实现企业大范围构建VPN网络。当然企业也可以构建自己的基于L2TP的VPN网络在L2TP VPN中,用户端的感觉就像是利用PPP协议直接接到了企业总部的PPP端接设备上一样,其地址分配可以由企业通过DHCP来分配,认证方式可以沿用PPP一直沿用的各种认证方式,并且L2TP是IETF定义的,其MIB库也将定义出来从而可以实现全局的网络管理。

    3 ospf中包的ttl值是多少?

    答案:1,因为224.0.0.5/224.0.0.6是本地链路组播

    4 OSPF为什么要划分区域?

    答案:RD用于BGP区分VPN路由,RT用于在各VRF中导入或导出路由

    5 MPLS VPN的标签一共有几层。内网的标签放在哪里。

    答案:如果没有流量工程则是2层,内网标签在隧道标签之后

    6 MPLS中RD和RT的作用分别是什么?

    答案:减少CPU负载,区域间使用距离矢量算法,因此其它区域的泛洪不会影响区域的SPF运算,这里注意面试官可能会问OSPF多区域如何防止环路。(注意答本质而不是现象,免得面试官追问)

    7 RR防止环路的机制。

    答案:RR中通过ORIGIN ID和CLUSTER ID防止环路,若RR收到带有自己CLUSTER ID的路由则丢弃

    8 BGP控制out-bound用local-pre,控制进来的用med.

    答案:正确

    9 ospf是工作在哪个协议上的?

    答案:IP,OSPF协议号89

    10 ospf的LSA类型。

    答案:1,2,3,4,5,6,7,没有什么好说的,注意考官问到第6类LSA,组播再准备多点

    11 简述OSPF的基本工作机制。

    答案:这个没什么可以说了,把知道的都说出来就行了

    12 ppp的lcp和ncp协商过程。

    答案:LCP过程协商二层链路相关参数,MTU/PPP压缩/认证协议类型等~~~NCP协商第三层协议,IP地址,IP压缩等等,这里记住最好不要说CDP

    13 笔试中还有一道PSTN的信令控制有哪三种?

    答案:这个我只知道随路信令和共路信令,信工同学提供的答案是:监视\号码\音信号\,知道正确答案的朋友麻烦纠正一下

    14sloari 8.0查看进程的命令是什么?linux 7.3查看IP的命令是什么?

    答案:不知道华为为什么问这个,第一个是PS吧?第二个是IFCONFIG /A

    15 IP是5.32.0.0,掩码255.224.0.0。请问最大的有效地址是多少。

    答案:最大主机地址5。64。255。254

    17 lx/lh的有效距离是多少?

    答案:???

    18 IP 包头几个字节?加上数据部分几个字节

    答案:应该是问IPV4,一般20字节,加上源路由选择等后最大60字节,加上数据部分还是根据链路MTU决定

    20 CQ能不能有一种流量dominate第二种流量?

    答案:CQ不能有一种流量DOMINATE其它任何流量

    21 FTP下载一个文件完成。有几个TCP连接

    答案:4个


    3.请问C++的类和C里面的struct有什么区别?
    答:struct的成员的默认访问说明符为Public,而class的成员的默认访问说明符为Private。其他没有区别
    4.请讲一讲析构函数和虚函数的用法和作用。
    答:析构函数是在对象生存期结束时自动调用的函数,用来释放在构造函数分配的内存。
    虚函数是指被关键字virtual说明的函数,作用是使用C++语言的多态特性
    5.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
    答:一些变量在整个程序中都是可见的,它们称为全局变量。一些变量只能在一个函数中可知,称为局部变量。这就是他们的区别。
    在任何函数外面定义的变量就是全局变量,在函数内部定义的变量是局部变量,这是它们在程序中的实现过程。
    操作系统和编译器是根据程序运行的内存区域知道他们的,程序的全局数据放在所分配内存的全局数据区,程序的局部数据放在栈区。
    6。有1,2,3,4,,,,n个数放在一个数组里,按大小排序,输出。 d Y t f#q9v B

    7。写一个算法,将一个数按高位到低位逆转,例如,用户输入123,则输出321。 v _ k0^ X+M f
    初始的数据放入n,结果放入m
    m=0;/o K f v9B
    while(n>0)3o4F k)W%w6]^ V a+B
    {
    m=m*10+(n mod 10);
    n=n\10;//整除/M'\;F7A R(V
    }/|+.L g.} a8E Z'c
    8。抽象类和接口的区别是什么?
    (1)接口可以被多重implements,抽象类只能被单一extends
    (2)接口只有定义,抽象类可以有定义和实现
    (3)接口的字段定义默认为:public static final, 抽象类字段默认是"friendly"

  • English interview

    2008-07-25 17:30:16

    1. What types of documents would you need for QA, QC, and Testing?
    2. What did you include in a test plan?
    3. Describe any bug you remember.
    4. What is the purpose of the testing?
    5. What do you like (not like) in this job?
    6. What is quality assurance?
    7. What is the difference between QA and testing?
    8. How do you scope, organize, and execute a test project?
    9. What is the role of QA in a development project?
    10. What is the role of QA in a company that produces software?
    11. Define quality for me as you understand it
    12. Describe to me the difference between validation and verification.
    13. Describe to me what you see as a process. Not a particular process, just the basics of having a process.
    14. Describe to me when you would consider employing a failure mode and effect analysis.
    15. Describe to me the Software Development Life Cycle as you would define it.
    16. What are the properties of a good requirement?
    17. How do you differentiate the roles of Quality Assurance Manager and Project Manager?
    18. Tell me about any quality efforts you have overseen or implemented. Describe some of the challenges you faced and how you overcame them.
    19. How do you deal with environments that are hostile to quality change efforts?
    20. In general, how do you see automation fitting into the overall process of testing?
    21. How do you promote the concept of phase containment and defect prevention?
    22. If you come onboard, give me a general idea of what your first overall tasks will be as far as starting a quality effort.
    23. What kinds of testing have you done?
    24. Have you ever created a test plan?
    25. Have you ever written test cases or did you just execute those written by others?
    26. What did your base your test cases?
    27. How do you determine what to test?
    28. How do you decide when you have ‘tested enough?’
    29. How do you test if you have minimal or no documentation about the product?
    30. Describe me to the basic elements you put in a defect report?
    31. How do you perform regression testing?
    32. At what stage of the life cycle does testing begin in your opinion?
    33. How do you analyze your test results? What metrics do you try to provide?
    34. Realising you won’t be able to test everything - how do you decide what to test first?
    35. Where do you get your expected results?
    36. If automating - what is your process for determining what to automate and in what order?
    37. In the past, I have been asked to verbally start mapping out a test plan for a common situation, such as an ATM. The interviewer might say, “Just thinking out loud, if you were tasked to test an ATM, what items might you test plan include?” These type questions are not meant to be answered conclusively, but it is a good way for the interviewer to see how you approach the task.
    38. If you’re given a program that will average student grades, what kinds of inputs would you use?
    39. Tell me about the best bug you ever found.
    40. What made you pick testing over another career?
    41. What is the exact difference between Integration & System testing, give me examples with your project.
    42. How did you go about testing a project?
    43. When should testing start in a project? Why?
    44. How do you go about testing a web application?
    45. Difference between Black & White box testing
    46. What is Configuration management? Tools used?
    47. What do you plan to become after say 2-5yrs (Ex: QA Manager, Why?)
    48. Would you like to work in a team or alone, why?
    49. Give me 5 strong & weak points of yours
    50. Why do you want to join our company?
    51. When should testing be stopped?
    52. What sort of things would you put down in a bug report?
    53. Who in the company is responsible for Quality?
    54. Who defines quality?
    55. What is an equivalence class?
    56. Is a “A fast database retrieval rate” a testable requirement?
    57. Should we test every possible combination/scenario for a program?
    58. What criteria do you use when determining when to automate a test or leave it manual?
    59. When do you start developing your automation tests?
    60. Discuss what test metrics you feel are important to publish an organization?
    61. In case anybody cares, here are the questions that I will be asking:
    62. Describe the role that QA plays in the software lifecycle.
    63. What should Development require of QA?
    64. What should QA require of Development?
    65. How would you define a “bug?”
    66. Give me an example of the best and worst experiences you’ve had with QA.
    67. How does unit testing play a role in the development/software lifecycle?
    68. Explain some techniques for developing software components with respect to testability.
    69. Describe a past experience with implementing a test harness in the development of software.
    70. Have you ever worked with QA in developing test tools? Explain the participation Development should have with QA in leveraging such test tools for QA use.
    71. Give me some examples of how you have participated in Integration Testing.
    72. How would you describe the involvement you have had with the bug-fix cycle between Development and QA?
    73. What is unit testing?
    74. Describe your personal software development process.
    75. How do you know when your code has met specifications?
    76. How do you know your code has met specifications when there are no specifications?
    77. Describe your experiences with code analyzers.
    78. How do you feel about cyclomatic complexity?
    79. Who should test your code?
    80. How do you survive chaos?
    81. What processes/methodologies are you familiar with?
    82. What type of documents would you need for QA/QC/Testing?
    83. How can you use technology to solve problem?
    84. What type of metrics would you use?
    85. How to find that tools work well with your existing system?
    86. What automated tools are you familiar with?
    87. How well you work with a team?
    88. How would you ensure 100% coverage of testing?
    89. How would you build a test team?
    90. What problem you have right now or in the past? How you solved it?
    91. What will you do during the first day of job?
    92. What would you like to do five years from now?
    93. Tell me about the worst boss you’ve ever had.
    94. What are your greatest weaknesses?
    95. What are your strengths?
    96. What is a successful product?
    97. What do you like about Windows?
    98. What is good code?
    99. Who is Kent Beck, Dr Grace Hopper, Dennis Ritchie?
    100. What are basic, core, practises for a QA specialist?
    101. What do you like about QA?
    102. What has not worked well in your previous QA experience and what would you change?
    103. How you will begin to improve the QA process?
    104. What is the difference between QA and QC?
    105. What is UML and how to use it for testing?
    106. What is CMM and CMMI? What is the difference?
    107. What do you like about computers?
    108. Do you have a favourite QA book? More than one? Which ones? And why.
    109. What is the responsibility of programmers vs QA?
    110. What are the properties of a good requirement?
    111. Ho to do test if we have minimal or no documentation about the product?
    112. What are all the basic elements in a defect report?
  • 面试经典

    2008-07-25 16:31:28

    测试人员面试问答总结

      面试过程中,面试官会向应聘者发问,而应聘者的回答将成为面试官考虑是否接受他的重要依据。对应聘者而言,了解这些问题背后的“猫腻”至关重要。以下对面试中经常出现的一些典型问题进行了整理,并给出相应的回答思路和参考答案。读者无需过分关注分析的细节,关键是要从这些分析中“悟”出面试的规律及回答问题的思维方式,达到“活学活用”。
      
      问题一:“请你自我介绍一下”

      思路: 1、这是面试的必考题目。 2、介绍内容要与个人简历相一致。 3、表述方式上尽量口语化。 4、要切中要害,不谈无关、无用的内容。 5、条理要清晰,层次要分明。6、事先最好以文字的形式写好背熟。
      
      问题二:“谈谈你的家庭情况”

      思路:1、 况对于了解应聘者的性格、观念、心态等有一定的作用,这是招聘单位问该问题的主要原因。 2、 简单地罗列家庭人。 3、 宜强调温馨和睦的家庭氛围。 4、 宜强调父母对自己教育的重视。 5、 宜强调各位家庭成员的良好状况。 6、 宜强调家庭成员对自己工作的支持。 7、 宜强调自己对家庭的责任感。
      
      问题三:“你有什么业余爱好?”

      思路: 1、 业余爱好能在一定程度上反映应聘者的性格、观念、心态,这是招聘单位问该问题的主要原因。 2、 最好不要说自己没有业余爱好。 3、 不要说自己有那些庸俗的、令人感觉不好的爱好。 4、 最好不要说自己仅限于读书、听音乐、上网,否则可能令面试官怀疑应聘者性格孤僻。 5、 最好能有一些户外的业余爱好来“点缀”你的形象。
      
      问题四:“你最崇拜谁?”

      思路: 1、 最崇拜的人能在一定程度上反映应聘者的性格、观念、心态,这是面试官问该问题的主要原因。 2、 不宜说自己谁都不崇拜。 3、 不宜说崇拜自己。 4、 不宜说崇拜一个虚幻的、或是不知名的人。 5、 不宜说崇拜一个明显具有负面形象的人。 6、 所崇拜的人人最好与自己所应聘的工作能“搭”上关系。 7、 最好说出自己所崇拜的人的哪些品质、哪些思想感染着自己、鼓舞着自己。
      
      问题五:“你的座右铭是什么?”

      思路: 1、座右铭能在一定程度上反映应聘者的性格、观念、心态,这是面试官问这个问题的主要原因。 2、不宜说那些医引起不好联想的座右铭。 3、不宜说那些太抽象的座右铭。 4、不宜说太长的座右铭。 5、座右铭最好能反映出自己某种优秀品质。 6、 参考答案——“只为成功找方法,不为失败找借口”
      
      问题六:“谈谈你的缺点”

      思路: 1、 不宜说自己没缺点。 2、 不宜把那些明显的优点说成缺点。 3、 不宜说出严重影响所应聘工作的缺点。 4、 不宜说出令人不放心、不舒服的缺点。 5、 可以说出一些对于所应聘工作“无关紧要”的缺点,甚至是一些表面上看是缺点,从工作的角度看却是优点的缺点。
      
      问题七:“谈一谈你的一次失败经历”

      思路: 1、 不宜说自己没有失败的经历。 2、 不宜把那些明显的成功说成是失败。 3、 不宜说出严重影响所应聘工作的失败经历, 4、 所谈经历的结果应是失败的。 5、 宜说明失败之前自己曾信心白倍、尽心尽力。 6、 说明仅仅是由于外在客观原因导致失败。 7、 失败后自己很快振作起来,以更加饱满的热情面对以后的工作。
      
      问题八:“你为什么选择我们公司?”

      思路: 1、 面试官试图从中了解你求职的动机、愿望以及对此项工作的态度。 2、 建议从行业、企业和岗位这三个角度来回答。 3、 参考答案——“我十分看好贵公司所在的行业,我认为贵公司十分重视人才,而且这项工作很适合我,相信自己一定能做好。”
      
      问题九:“对这项工作,你有哪些可预见的困难?”

      思路: 1、 不宜直接说出具体的困难,否则可能令对方怀疑应聘者不行。 2、 可以尝试迂回战术,说出应聘者对困难所持有的态度——“工作中出现一些困难是正常的,也是难免的,但是只要有坚忍不拔的毅力、良好的合作精神以及事前周密而充分的准备,任何困难都是可以克服的。”
      
      问题十:“如果我录用你,你将怎样开展工作”

      思路: 1、 如果应聘者对于应聘的职位缺乏足够的了解,最好不要直接说出自己开展工作的具体办法, 2、 可以尝试采用迂回
      战术来回答,如“首先听取领导的指示和要求,然后就有关情况进行了解和熟悉,接下来制定一份近期的工作计划并报领导批准,最后根据计划开展工作。”
      
      问题十一:“与上级意见不一是,你将怎么办?”

      思路: 1、 一般可以这样回答“我会给上级以必要的解释和提醒,在这种情况下,我会服从上级的意见。” 2、 如果面试你的是总经理,而你所应聘的职位另有一位经理,且这位经理当时不在场,可以这样回答:“对于非原则性问题,我会服从上级的意见,对于涉及公司利益的重大问题,我希望能向更高层领导反映。”
      
      问题十二:“我们为什么要录用你?”

      思路: 1、 应聘者最好站在招聘单位的角度来回答。 2、 招聘单位一般会录用这样的应聘者:基本符合条件、对这份共组感兴趣、有足够的信心。 3、 如“我符合贵公司的招聘条件,凭我目前掌握的技能、高度的责任感和良好的饿适应能力及学习能力 ,完全能胜任这份工作。我十分希望能为贵 公司服务,如果贵公司给我这个机会,我一定能成为贵公司的栋梁!”
      
      问题十三:“你能为我们做什么?”
      思路: 1、 基本原则上“投其所好”。 2、 回答这个问题前应聘者最好能“先发制人”,了解招聘单位期待这个职位所能发挥的作用。 3、 应聘者可以根据自己的了解,结合自己在专业领域的优势来回答这个问题。
      
      问题十四:“你是应届毕业生,缺乏经验,如何能胜任这项工作?”

      思路: 1、 如果招聘单位对应届毕业生的应聘者提出这个问题,说明招聘单位并不真正在乎“经验”,关键看应聘者怎样回答。 2、 对这个问题的回答最好要体现出应聘者的诚恳、机智、果敢及敬业。 3、 如“作为应届毕业生,在工作经验方面的确会有所欠缺,因此在读书期间我一直利用各种机会在这个行业里做兼职。我也发现,实际工作远比书本知识丰富、复杂。但我有较强的责任心、适应能力和学习能力,而且比较勤奋,所以在兼职中均能圆满完成各项工作,从中获取的经验也令我受益非浅。请贵公司放心,学校所学及兼职的工作经验使我一定能胜任这个职位。”
      
      问题十五:“你希望与什么样的上级共事?”

      思路: 1、 通过应聘者对上级的“希望”可以判断出应聘者对自我要求的意识,这既上一个陷阱,又上一次机会。 2、 最好回避对上级具体的希望,多谈对自己的要求。 3、 如“做为刚步入社会新人,我应该多要求自己尽快熟悉环境、适应环境,而不应该对环境提出什么要求,只要能发挥我的专长就可以了。”
      
      问题十六:“您在前一家公司的离职原因是什么?”

      思路: 1、 最重要的是:应聘者要使找招聘单位相信,应聘者在过往的单位的“离职原因”在此家招聘

      单位里不存在。 2、 避免把“离职原因”说得太详细、太具体。 3、 不能掺杂主观的负面感受,如“太幸苦”、“人际关系复杂”、“管理太混乱”、“公司不重视人才”、“公司排斥我们某某的员工”等。 4、 但也不能躲闪、回避,如“想换换环境”、“个人原因”等。 5、 不能涉及自己负面的人格特征,如不诚实、懒惰、缺乏责任感、不随和等。 6、 尽量使解释的理由为应聘者个人形象添彩。 7、 如“我离职是因为这家公司倒闭。我在公司工作了三年多,有较深的感情。从去年始,由于市场形势突变,公司的局面急转直下。到眼下这一步我觉得很遗憾,但还要面对显示,重新寻找能发挥我能力的舞台。” 同一个面试问题并非只有一个答案,而同一个答案并不是在任何面试场合都有效,关键在于应聘者掌握了规律后,对面试的具体情况进行把握,有意识地揣摩面试官提出问题的心理背景,然后投其所好。

    试题1:为什么你是这份工作的最佳人选?
      你们需要可以生产出“效益“的人,而我的背景和经验可以证明我的能力,例如:我曾经.....
      试题2:判断性问题,你有没有创造性?你能不能在压力下工作?
      回答“是“,并给出一个具体的例子。
      试题3:描述一下你自己。
      列举3个自己的性格与成就的具体案例。 认真,责任,有计划
      问题一:请用三分钟简单介绍一下你自己。
      回答要点:用10秒钟简单说说个人资料即可。用一分半钟左右时间介绍你以前从事的工作,和所获得的经验。再用一分钟左右时间描述你以前的工作经验对应聘的这份职位来说有那些帮助。 
      
      问题三:你了解我们公司吗?你了解你应聘的这个职位吗?
      回答要点:公司的详细情况你应该在公司的招聘信息上看清楚,最好将公司从事的业务和职位的职能及要求刻在脑海里,并在面试前询问一下相关朋友。这样面试时你就可以回答的流利自如。
      
      问题四:你为什么应聘这个职位?(工作经验和学习背景)
      因为我有胜任这个职位的能力!
      优势和兴趣爱好使我喜欢这个职位
      我将来的发展方向做一个很好的奠基。
      
      问题五:你将来的职业发展方向是什么?
      回答要点:面试前做好准备,面试时根据自己的实际情况如实回答,并且要与该职位相符。让对方觉得你会长久在这个行业和职位发展下去。
      
      问题六:谈谈你对钱的看法
      钱很重要!企业的存在就是为了创造更多的利润,我希望每个人都能意识到钱的重要性。”  
      
      问题七:薪水问题
      “我们能不能把这个问题放在最后,先看看我能为公司做些什么。”  
      
      问题八:你以前工作中遇到的最大困难是什么?你是如何克服的?
      有时候工作繁重,压力大,客户催促紧,使自己经常处于极度忙碌状态。
      
      问题八你认为你最大的缺点是什么?
      同事曾经责怪我对工作要求太高,而实际上通过努力我做到了,而且做的不错。
      
      你有女(男)朋友吗?她(他)也在这个城市吗?
      没有  
      
      特殊问题:对方问你原公司的一些商业机密
      无可奉告
      
      问题3:你找工作时,最重要的考虑因素为何?
      你理想中的工作是什么样的?
      
      
      变形:A 你最喜欢的工作是什么样的?
      B 在什么条件下你的工作效率最高?
      C 找工作你在乎什么?
      目的:了解你的工作价值观,看是否与公司发展现状以及企业文化适应。
      切忌:不要说希望自己希望在和谐的环境下工作,因为这是靠自己配合去创造的,它还会让人误会你曾经人际关系紧张。
      参考:In my opinion, an ideal job can show my strength points to the utmost,so that i can work efficiently.
      一个理想的工作是在我的能力能够得到体现,我能够高效率的工作!
      工作的性质是否能让我发挥所长,并不断成长。
      
      2)你的爱好是什么?
      Frankly speaking, my hobby is very extensive,such as swimming, traveling,singing and so on. but....is my favourate...,which teaches me to coprate with others.
      
      问题1:你为什么想离开目前的职务?

      为了自己更好的寻求大的发展空间。
      因为我现在呆的公司是事业单位, 由于体制的原因,办事效率低,总感觉交给我的工作总是太少,我觉得学习机会相对少些。    
      
      问题4:为什么我们应该录取你?

      您可以由我过去的工作表现所呈现的客观数据,明显地看出我全力以赴的工作态度。
      
      问题5:请谈谈你个人的最大特色。

      我的坚持度很高,事情没有做到一个令人满意的结果,绝不罢手。  
      
      (1) 你的学业不太理想呵…
      答:这是因为精力过多集中在某些功课上而忽略了其他课程的学习。但成绩单只能说明过去的一时情况,今天贵公司约我来面试,说明您们不仅看重书面材料,而且更看重应聘者的实际能力。
      
      (2) 你对待遇问题怎么看?
      我愿意努力去工作,从中找到乐趣和幸福。我也相信会得到与自己付出相当的报酬。
      
      (3) 你能和不好的人相处吗?
      不太好预言。因为我事实上从来没有和不好相处的人相处过,我的同学似乎都和我相处得很好。

  • 英文面试(转载)

    2008-07-25 16:23:24

    测试人员英语面试

      英语面试需要好好准备:

      1.要有一份高质量的自我介绍

      2.同时,面试的人员,对你以前的测试工作经历会比较感兴趣,会以闲聊的方式用英语与你交流,可以提前准备的

      3.会选用部分案例,比如遥控器,比如自动选款机等,要你口述:假设你是个测试人员,你会从哪些方面去测试

      4.对测试的认识,和对自己的测试工作规划,也有很大的机会会被考官问到。

      我们无法确切的猜测到英文面试中的所有点点种种,但是,有些必要的回答,还是可以准备的,其实关键是面试的时候,不要紧张。不用急着回答考官的题目,在脑子里简单理一下思路后,再连贯的,有自信的回答,会得到考官的欣赏和认可。

      以下是部分英语面试中的参考回答,仅提参考:

    Interview English:

    一,Why are you interested in working for our company?
    1。Because your company has a good sales record.
    2。Because your operations are global, so I feel I can gain the most from working in this kind of environment.
    3.Because I think my major is suitable for this position.
    4。Because I can learn new things in your company, at the same time I can offer my services to you.
    5。Because I'm very interested in your company's training program.

    二, Why did you leave your former company?
    1。Because I'm working in a small company where a further promotion is impossible.
    2。Because I'm capable of more responsibilities, so I decided to change my job.
    3。Because that company didn't have a good future, so I needed to consider my future.
    4。Because I want to change my working environment, I'd like to find a job, which is more challenging.
    5。Because I had some private reasons, some family things.

    三,What are your great strengths?
    1。I'm a good team player.
    2。I'm a hard-working, persistent person and a fast-learner.
    3。 I can work under pressure and get along with my colleagues.
    4。 I have strong organizational skills.

    四,In what specific ways will our company benefit form hiring you?
    1。I think that my technical background is helpful for you.
    2。I have enough knowledge to market the products of your company.
    3。I'm very familiar with this market and have many customers. I think your company will benefit from it.
    4。Your company will benefit from gaining a young energetic, bright, person.
    5。 I know I am the right person for this job.

    五,What are your salary expectations?
    1。I would expect the standard rate of pay at your company for a person with my experiences and educational background.
    2。Shall we discuss my responsibilities with your company first? I think salary is closely related to the responsibilities of the job.
    3。 I hope you'll consider my experience and training and will offer me a salary higher than the junior secretary's salary.
    4。 I expect to be paid according to my abilities.
    5。 With my experiences, I'd like to start at RMB4000 a month


    Interview English:

    32. Q: Can you sell yourself in two minutes? Go for it.
    A: With my qualifications and experience, I feel I am hardworking, responsible and diligent in any project I undertake. Your organization could benefit from my analytical and interpersonal skills.
    Q: Give me a summary of your current job descrīption.
    A: I have been working as a computer programmer for five years. To be specific, I do system analysis, trouble shooting and provide software support.

    33. Q: Why did you leave your last job?
    A: Well, I am hoping to get an offer of a better position. If opportunity knocks, I will take it.
    Q: How do you rate yourself as a professional?
    A: With my strong academic background, I am capable and competent.
    Q: What contribution did you make to your current previous organization?
    A: I have finished three new projects, and I am sure I can apply my experience to this position.

    34. Q: What do you think you are worth to us?
    A: I feel I have reached the "glass ceiling" in my current job. / I feel there is no opportunity for advancement.
    Q: Why did you leave your last job? 
    A: I feel I can make some positive contributions to your company in the future.
    Q: What make you think you would be a success in this position?
    A: My graduate school training combined with my internship should qualify me for this particular job. I am sure I will be successful.

    35.Q: Are you a multi-tasked individual? or Do you work well under stress or pressure?
    A: The trait is needed in my current (or previous) position and I know I can handle it well.
    Q: What are your strongest traits?
    A: Helpfulness and caring, adaptability and sense of humor, cheerfulness and friendliness.
    Q: How do you rate yourself as a professional?
    A: With my teaching experience, I am confident that I can relate to students very well.
    36. Q: How would your friends or colleagues describe you?
    A: (pause a few seconds.)They say xxx is an honest, hardworking and responsible man who deeply cares for his family and friends.
    Q: What personality traits do you admire?
    A: I admire a person who is honest, flexible and easy-going and possess the "can do" spirit.

    37. Q: What leadership qualities did you develop as administrative personnel?
    A: I feel that learning how to motivate people and to work together as a team will be the major goal of my leadership.
    Q: How do you normally handle criticism?
    A: Silence is golden. Just don't say anything; otherwise the situation could become worse. I do, however, accept constructive criticism. When we cool off, we will discuss it later.

    38. Q: What do you find frustrating in a work situation?
    A: Sometimes, the narrow-minded people make me frustrated.
    Q: How would your friends or colleagues describe you?
    A: They say Mr. Chen is a friendly, sensitive, caring and determined person.
    Q: What leadership qualities did you develop as an administrative personnel?
    A: I have refined my management style by using an open-door policy.

    39. Q: What do you find frustrating in a work situation?
    A: Minds that are not receptive to new ideas.
    Q: How do you handle your conflict with your colleagues in your work?
    A: I will try to present my ideas in a more clear and civilized manner in order to get my points across.
    Q: What provide you with a sense of accomplishment.
    A: Doing my best job for your company.

    40. Q: How do you handle your failure?
    A: None of us was born "perfect". I am sure I will be given a second chance to correct my mistake.
    Q: Could you project what you would like to be doing five years from now?
    A: It would be premature for me to predict this. Hypothetically speaking, I might be able to do your current job as a director.

    41. Q: If you had a lot of money to donate, where would you donate it? Why?
    A: I would donate it to the medical research because I want to do something to help others.
    Q: What provide you with a sense of accomplishment.
    A: Finishing a project to the best of my ability.
    Q: What is most important in your life right now?
    A: To get a job in my field is most important to me.
    42. Q: Could you project what you would like to be doing five years from now?
    A: I hope to demonstrate my ability and talents in my field adequately.
    Perhaps, an opportunity at a management position would be exciting.
    Q: What range of pay-scale are you interested in?
    A: Money is important, but the responsibility that goes along with this job is what interests me the most.

    43. Q: What is most important in your life right now?
    A: To secure employment hopefully with your company.
    Q: If you had a lot of money to donate, where would you donate it? Why?
    A: I prefer to donate it to educational institutions.
    Q: What current issues concern you the most?
    A: The general state of our economy and the impact of China' entry to WTO on our industry.

    44. Q: How long would you like to stay with this company?
    A: I will stay as long as I can continue to learn and to grow in my field.
    Q: Could you project what you would like to be doing five years from now?
    A: As I have some administrative experience in my last job, I may use my organizational and planning skills in the future.
    Q: What range of pay-scale are you interested in?
    A: To be frank and open with you, I like this job, but I have a family to support.

  • loadrunner 压力测试

    2007-12-14 13:50:00

     

      压力测试之前,最要不要急于录制脚本。先针对性能需求,设计好场景。同时分析问题原因也是关键的一步。

Open Toolbar