测试学习进行中

发布新日志

  • LINUX 面试题大全

    2010-03-15 11:08:57

    Linux面试题大全

    一.填空题:
    1. 在Linux系统中,以 文件 方式访问设备 。
    2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。
    3. Linux文件系统中每个文件用 i节点 来标识。
    4. 全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。
    5. 链接分为: 硬链接 和 符号链接 。
    6. 超级块包含了i节点表 和 空闲块表 等重要的文件系统信息。
    7. 某文件的权限为:drw-r--r--,用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是 目录 。
    8. 前台起动的进程使用 Ctrl+c 终止。
    9. 静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置。
    10. 网络管理的重要任务是: 控制 和 监控 。
    11. 安装Linux系统对硬盘分区时,必须有两种分区类型: 文件系统分区 和 交换分区 。
    13. 编写的Shell程序运行前必须赋予该脚本文件 执行 权限。
    14. 系统管理的任务之一是能够在 分布式 环境中实现对程序和数据的安全保护、备份、恢复和更新。
    15. 系统交换分区是作为系统 虚拟存储器 的一块区域。
    16. 内核分为 进程管理系统 、 内存管理系统 、 I/O管理系统 和文件管理系统 等四个子系统。
    17. 内核配置是系统管理员在改变系统配置 硬件 时要进行的重要操作。
    18. 在安装Linux系统中,使用netconfig程序对网络进行配置,该安装程序会一步步提示用户输入主机名、域名、域名服务器、IP地址、 网关地址 和 子网掩码 等必要信息。
    19. 唯一标识每一个用户的是用户 ID 和用户名。
    20 . RIP 协议是最为普遍的一种内部协议,一般称为动态路由选择协议。
    21. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为 文件系统 。
    22. DHCP可以实现动态 IP 地址分配。
    23. 系统网络管理员的管理对象是服务器、 用户 和服务器的进程 以及系统的各种资源。
    24. 网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心。
    25. 当想删除本系统用不上的 设备驱动程序 时必须编译内核,当内核不支持系统上的 设备驱动程序 时,必须对内核 升级 。
    26 Ping命令可以测试网络中本机系统是否能到达 一台远程主机 ,所以常常用于测试网络的 连通性 。
    27. vi编辑器具有两种工作模式: 命令模式 和 输入模式 。
    28. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占 1 位,表示 文件类型 ,第二段占3位,表示 文件所有者 对该文件的权限。
    29. 进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为: 运行态 、 就绪态 和 等待态(阻塞态) 。
    30. DNS实际上是分布在internet上的主机信息的数据库,其作用是实现 IP地址和主机名 之间的转换。
    31. Apache是实现WWW服务器功能的应用程序,即通常所说的“浏览web服务器”,在服务器端 为用户提供浏览 web服务 的就是apache应用程序。
    32. 在Linux系统上做备份可以有两种类型:系统备份 和 用户备份 。其中前者是指对 操作系统 的备份,后者是指对 应用程序和用户文件的备份。
    33. CD-ROM标准的文件系统类型是 iso9660 。
    34. 当lilo.conf配置完毕后,使之生效,应运行的命令及参数是 lilo 。
    35. 在使用ls命令时,用八进制形式显示非打印字符应使用参数 -b 。
    36. Linux使用支持Windows 9.x/2000长文件名的文件系统的类型是 vfat 。
    37. 设定限制用户使用磁盘空间的命令是 quota 。
    38 在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是 /etc 。
    39. 硬连接只能建立对 文件 链接。符号链接可以跨不同文件系统创建。
    40. 套接字文件的属性位是 s 。
    41. 结束后台进程的命令是 kill 。
    42. 进程的运行有两种方式,即 独立运行和使用父进程运行 。
    43. Links分为 硬链接和符号链接 。
    44. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是 ps -aux 。
    45. 管道文件的属性位是 p 。
    46. 将前一个命令的标准输出作为后一个命令的标准输入,称之为 管道 。
    47. 为脚本程序指定执行权的命令及参数是 chmod a+x filename 。
    48. 进行远程登录的命令是 telnet 。
    49. 欲发送10个分组报文测试与主机abc.tuu.edu.cn的连通性,应使用的命令和参数是: ping abc.tuu.edu.cn –c 10 。
    50. DNS服务器的进程命名为named,当其启动时,自动装载 /etc目录下的 named.conf 文件中定义的DNS分区数据库文件。
    51. Apache服务器进程配置文件是 httpd.conf 。
    52.在 Linux系统中,压缩文件后生成后缀为.gz文件的命令是 gzip 。
    53. 在用vi编辑文件时,将文件内容存入test.txt文件中,应在命令模式下键入 :w test.txt 。
    54 可以在标准输出上显示整年日历的命令及参数是 cal -y 。
    55. 在shell编程时,使用方括号表示测试条件的规则是:方括号两边必须有 空格 。
    56. 检查已安装的文件系统/dev/had5是否正常,若检查有错,则自动修复,其命令及参数是 fsck –a /dev/had5 。
    57. 在Windows9.x环境下共享Unix/Linux中的用户目录的一个工具是 Samba服务器 。
    58. 系统管理员的职责是进行系统资源管理、系统性能管理、设备管理、安全管理和 系统性能监测 。
    59 在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令 nslookup 。
    60. 在Linux系统下,第二个IDE通道的硬盘(从盘)被标识为 hdb 。
    61. 当系统管理员需升级内核版本和改变系统硬件配置时,应 重新编译内核 。
    62. 如果只是要修改系统的IP地址,应修改 /etc/rc.d/rc.inet1 配置文件。
    63. 当LAN内没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置 /etc/hosts 文件。
    64. 在vi编辑环境下,使用 Esc键 进行模式转换。
    65. Slackware Linux 9.0通常使用 ext3 文件系统,系统的全部磁盘块由 四 部分组成。
    66. 将/home/stud1/wang目录做归档压缩,压缩后生成wang.tar.gz文件,并将此文件保存到/home目录下,实现此任务的tar命令格式 tar zcvf /home/wang.tar.gz /home/stud1/wang 。
    67. 管道就是将前一个命令的 标准输出 作为后一个命令的 标准输入 。
    68. 在使用手工的方法配置网络时,可通过修改 /etc/HOSTNAME 文件来改变主机名,若要配置该计算机的域名解析客户端,需配置 /etc/resolv.conf 文件。
    69. 启动进程有手动启动和调度启动两种方法,其中调度启动常用的命令为 at 、 batch 和 crontab 。
    70. test.bns.com.cn的域名是 bns.com.cn ,如果要配置一域名服务器,应在 named.conf 文件中定义DNS数据库的工作目录。
    71. Sendmail邮件系统使用的两个主要协议是: SMTP 和 POP ,前者用来发送邮件,后者用来接收邮件。
    72. DHCP是动态主机配置协议的简称,其作用是:为网络中的主机分配IP地址 。
    73. 目前代理服务器使用的软件包有很多种,教材中使用的是 squid 。
    74. rm命令可删除文件或目录,其主要差别就是是否使用递归开关 -r或-R 。
    75. mv 命令可以移动文件和目录,还可以为文件和目录重新命名。
    76. 路由选择协议(RIP)的跳数表示到达目的地之前必须通过的 网关 数,RIP接受的最长距离是 15跳 。
    77. ping命令用于测试网络的连通性,ping命令通过 ICMP 协议来实现。
    78. nfs 协议用于实现Unix(/linux)主机之间的文件系统共享。
    79. 在Linux操作系统中,设备都是通过特殊的 文件 来访问。
    80. shell不仅是 用户命令的解释器 ,它同时也是一种功能强大的编程语言。 bash是Linux的缺省shell。
    81. 用 >;>; 符号将输出重定向内容附加在原文的后面。
    82. 增加一个用户的命令是:adduser 或useradd 。
    83 进行字符串查找,使用grep命令。
    84. 使用 * 每次匹配若干个字符。
    85. /sbin 目录用来存放系统管理员使用的管理程序。

    二.单项选择题:
    1. 下面的网络协议中,面向连接的的协议是: A 。
    A 传输控制协议 B 用户数据报协议 C 网际协议 D 网际控制报文协议
    2. 在/etc/fstab文件中指定的文件系统加载参数中, D 参数一般用于CD-ROM等移动设备。
    A defaults B sw C rw和ro D noauto
    3. Linux文件权限一共10位长度,分成四段,第三段表示的内容是 C 。
    A 文件类型 B 文件所有者的权限
    C 文件所有者所在组的权限 D 其他用户的权限
    4. 终止一个前台进程可能用到的命令和操作 B 。
    A kill B <CTRL>;+C C shut down D halt
    5.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是 D 。
    A -m B -d C -f D -p
    6. 下面关于i节点描述错误的是 A 。
    A i节点和文件是一一对应的
    B i节点能描述文件占用的块数
    C i节点描述了文件大小和指向数据块的指针
    D 通过i节点实现文件的逻辑结构和物理结构的转换
    7. 一个文件名字为rr.Z,可以用来解压缩的命令是: D 。
    A tar B gzip C compress D uncompress
    8. 具有很多C语言的功能,又称过滤器的是 C 。
    A csh
    B tcsh
    C awk
    D sed
    9. 一台主机要实现通过局域网与另一个局域网通信,需要做的工作是 C 。
    A 配置域名服务器
    B 定义一条本机指向所在网络的路由
    C 定义一条本机指向所在网络网关的路由
    D 定义一条本机指向目标网络网关的路由
    10. 建立动态路由需要用到的文件有 D 。
    A /etc/hosts B /etc/HOSTNAME C /etc/resolv.conf D /etc/gateways
    11. 局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20访问172.16.1.0/24网络时,其路由设置正确的是 B 。
    A route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
    B route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.255 metric 1
    C route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1
    D route add default 192.168.1.0 netmask 172.168.1.1 metric 1
    12. 下列提法中,不属于ifconfig命令作用范围的是 D 。
    A 配置本地回环地址 B 配置网卡的IP地址
    C 激活网络适配器 D 加载网卡到内核中
    13. 下列关于链接描述,错误的是 B 。
    A 硬链接就是让链接文件的i节点号指向被链接文件的i节点
    B 硬链接和符号连接都是产生一个新的i节点
    C 链接分为硬链接和符号链接 D 硬连接不能链接目录文件
    14. 在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是 C。
    A 主机IP设置有误
    B 没有设置连接局域网的网关
    C 局域网的网关或主机的网关设置有误
    D 局域网DNS服务器设置有误
    15. 下列文件中,包含了主机名到IP地址的映射关系的文件是: B 。
    A /etc/HOSTNAME B /etc/hosts C /etc/resolv.conf D /etc/networks
    16. 不需要编译内核的情况是 D 。
    A 删除系统不用的设备驱动程序时 B 升级内核时
    C 添加新硬件时 D 将网卡激活
    17. 在shell中变量的赋值有四种方法,其中,采用name=12的方法称 A 。
    A 直接赋值 B使用read命令
    C 使用命令行参数 D使用命令的输出
    18. D 命令可以从文本文件的每一行中截取指定内容的数据。
    A cp B dd C fmt D cut
    19. 下列不是Linux系统进程类型的是 D 。
    A 交互进程 B 批处理进程 C 守护进程 D 就绪进程
    20.配置Apache 1.3.19服务器需要修改的配置文件为___A______
    A httpd.conf B access.conf C srm.conf D named.conf
    21. 内核不包括的子系统是 D 。
    A 进程管理系统 B 内存管理系统 C I/O管理系统 D硬件管理系统
    22. 在日常管理中,通常CPU会影响系统性能的情况是: A 。
    A CPU已满负荷地运转 B CPU的运行效率为30%
    C CPU的运行效率为50% D CPU的运行效率为80%
    23. 若一台计算机的内存为128MB,则交换分区的大小通常是 C 。
    A 64MB B 128MB C 256MB D 512MB
    24. 在安装Linux的过程中的第五步是让用户选择安装方式,如果用户希望安装部分组件(软件程序),并在选择好后让系统自动安装,应该选择的选项是 D 。
    A full B expert C newbie D menu
    25. Linux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用 C 命令。
    A cat B more C less D menu
    26. 下列信息是某系统用ps –ef命令列出的正在运行的进程, D 进程是运行Internet超级服务器,它负责监听Internet sockets上的连接,并调用合适的服务器来处理接收的信息。
    A root 1 4.0 0.0 344 204? S 17:09 0:00 init
    B root 2 0.0 0.1 2916 1520? S 17:09 0:00 /sbin/getty
    C root 3 0.0 0.2 1364 632? S 17:09 0:00 /usr/sbin/syslogd
    D root 4 0.0 1344 1204? S 17:09 0:10 /usr/sbin/inetd
    27.在TCP/IP模型中,应用层包含了所有的高层协议,在下列的一些应用协议中, B 是能够实现本地与远程主机之间的文件传输工作。
    A telnet B FTP C SNMP D NFS
    28.当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是 C 。
    A ping B ifconfig C traceroute D netstat
    29.对名为fido的文件用chmod 551 fido 进行了修改,则它的许可权是 D 。
    A -rwxr-xr-x B -rwxr--r-- C -r--r--r-- D -r-xr-x—x
    30. 在i节点表中的磁盘地址表中,若一个文件的长度是从磁盘地址表的第1块到第11块,则该文件共占有 B 块号。
    A 256 B 266 C 11 D 256×10
    31. 用ls –al 命令列出下面的文件列表, D 文件是符号连接文件。
    A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello
    B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbey
    C drwxr--r-- 1 hel users 1024 Sep 10 08:10 zhang
    D lrwxr--r-- 1 hel users 2024 Sep 12 08:12 cheng
    32. DNS域名系统主要负责主机名和 A 之间的解析。
    A IP地址 B MAC地址 C 网络地址 D 主机别名
    33. WWW服务器是在Internet上使用最为广泛,它采用的是 B 结构。
    A 服务器/工作站 B B/S C 集中式 D 分布式
    34.Linux系统通过 C 命令给其他用户发消息。
    A less B mesg y C write D echo to
    35.NFS是 C 系统。
    A 文件 B 磁盘 C 网络文件 D 操作
    36. B 命令可以在Linux的安全系统中完成文件向磁带备份的工作。
    A cp B tr C dir D cpio
    37.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在 C 目录中。
    A /bin B /etc C /dev D /lib
    38.在重新启动Linux系统的同时把内存中的信息写入硬盘,应使用 D 命令实现。
    A # reboot B # halt C # reboot D # shutdown –r now
    39.网络管理具备以下几大功能:配置管理、 A 、性能管理、安全管理和计费管理等。
    A 故障管理 B 日常备份管理 C 升级管理 D 发送邮件
    40.关于代理服务器的论述,正确的是 A 。
    A 使用internet上已有的公开代理服务器,只需配置客户端。
    B 代理服务器只能代理客户端http的请求。
    C 设置好的代理服务器可以被网络上任何主机使用。
    D 使用代理服务器的客户端没有自己的ip地址。
    41.关闭linux系统(不重新启动)可使用命令 B 。
    A Ctrl+Alt+Del B halt C shutdown -r now D reboot
    42.实现从IP地址到以太网MAC地址转换的命令为: C 。
    A ping B ifconfig C arp D traceroute
    43.在vi编辑器中的命令模式下,键入 B 可在光标当前所在行下添加一新行。
    A <a>; B <o>; C <I>; D A
    44.在vi编辑器中的命令模式下,删除当前光标处的字符使用 A 命令。
    A <x>; B <d>;<w>; C <D>; D <d>;<d>;
    45.在vi编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用 C 命令。
    A 上箭头 B 下箭头 C <.>; D <*>;
    46.用命令ls -al显示出文件ff的描述如下所示,由此可知文件ff的类型为 A 。
    -rwxr-xr-- 1 root root 599 Cec 10 17:12 ff
    A 普通文件 B 硬链接 C 目录 D 符号链接
    47.删除文件命令为: D 。
    A mkdir B rmdir C mv D rm
    48.在下列的名称中,不属于DNS服务器类型的是:____C_____
    A Primary Master Server B Secondary Master Server
    C samba D Cache_only Server
    49.网络管理员对WWW服务器进行访问、控制存取和运行等控制,这些控制可在 A 文件中体现。
    A httpd.conf B lilo.conf C inetd.conf D resolv.conf
    50.邮件转发代理也称邮件转发服务器,它可以使用SMTP协议,也可以使用 C 协议。
    A FTP B TCP C UUCP D POP
    51.启动samba服务器进程,可以有两种方式:独立启动方式和父进程启动方式,其中前者是在 C 文件中以独立进程方式启动。
    A /usr/sbin/smbd B /usr/sbin/nmbd C rc.samba D /etc/inetd.conf
    52.DHCP是动态主机配置协议的简称,其作用是可以使网络管理员通过一台服务器来管理一个网络系统,自动地为一个网络中的主机分配___D______地址。
    A 网络 B MAC C TCP D IP
    53.为了保证在启动服务器时自动启动DHCP进程,应将 A文件中的dhcpd=no改为dhcpd=yes。
    A rc.inet1 B lilo.conf C inetd.conf D httpd.conf
    54.对文件进行归档的命令为 D 。
    A dd B cpio C gzip D tar
    55.改变文件所有者的命令为 C 。
    A chmod B touch C chown D cat
    56.在给定文件中查找与设定条件相符字符串的命令为: A 。
    A grep B gzip C find D sort
    57.建立一个新文件可以使用的命令为 D 。
    A chmod B more C cp D touch
    58.在下列命令中,不能显示文本文件内容的命令是: D 。
    A more B less C tail D join
    59.在使用匿名登录ftp时,用户名为 B 。
    A users B anonymous C root D guest
    60.在实际操作中,想了解命令logname 的用法,可以键入 D 得到帮助。
    A logname --man B logname/? C help logname D logname --help
    61.如果LILO被安装在MBR,使用 A 命令即可卸载LILO。
    A lilo –u B lilo –c C lilo –v D lilo -V
    62.当用命令ls –al查看文件和目录时,欲观看卷过屏幕的内容,应使用组合键 D 。
    A Shift+Home B Ctrl+ PgUp C Alt+ PgDn D Shift+ PgUp
    63.mc是UNIX风格操作系统的 C 。
    A 文件编辑器/程序编译器 B 配置网络的窗口工具
    C 目录浏览器/文件管理器 D Samba服务器管理工具
    64.i节点是一个 D 长的表,表中包含了文件的相关信息。
    A 8字节 B 16字节 C 32字节 D 64字节
    65.文件权限读、写、执行的三种标志符号依次是 A 。
    A rwx B xrw C rdx D srw
    66.Linux 文件名的长度不得超过 C 个字符。
    A 64 B 128 C 256 D 512
    67.进程有三种状态: C 。
    A 准备态、执行态和退出态 B 精确态、模糊态和随机态
    C 运行态、就绪态和等待态 D 手工态、自动态和自由态
    68. 从后台启动进程,应在命令的结尾加上符号 A 。
    A & B @ C # D $
    69. B 不是邮件系统的组成部分。
    A 用户代理 B 代理服务器 C 传输代理 D 投递代理
    70.在Shell脚本中,用来读取文件内各个域的内容并将其赋值给Shell变量的命令是 D 。
    A fold B join C tr D read
    71.crontab文件由六个域组成,每个域之间用空格分割,其排列如下: B 。
    A MIN HOUR DAY MONTH YEAR COMMAND
    B MIN HOUR DAY MONTH DAYOFWEEK COMMAND
    C COMMAND HOUR DAY MONTH DAYOFWEEK
    D COMMAND YEAR MONTH DAY HOUR MIN
    72.用ftp进行文件传输时,有两种模式: C 。
    A Word和binary B .txt和Word Document
    C ASCII和binary D ASCII和Rich Text Format
    73.某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为 D 。
    A 467 B 674 C 476 D 764
    74.在DNS系统测试时,设named进程号是53,命令 D 通知进程重读配置文件。
    A kill –USR2 53 B kill –USR1 53 C kill -INT 63 D kill –HUP 53
    75.Apache服务器默认的接听连接端口号是 C 。
    A 1024 B 800 C 80 D 8
    76.PHP和MySQL的联合使用解决了 C 。
    A 在Proxy上处理数据库的访问问题 B 在WWW服务器上处理黑客的非法访问问题
    C 在WWW服务器上处理数据库的访问问题
    D 在Sendmail邮件系统上处理数据库的访问问题
    77.OpenSSL是一个 A 。
    A 加密软件 B 邮件系统 C 数据库管理系统 D 嵌入式脚本编程语言
    78.Samba服务器的配置文件是 D 。
    A httpd.conf B inetd.conf C rc.samba D smb.conf
    79.关于DNS服务器,叙述正确的是 D 。
    A DNS服务器配置不需要配置客户端
    B 建立某个分区的DNS服务器时只需要建立一个主DNS服务器
    C 主DNS服务器需要启动named进程,而辅DNS服务器不需要
    D DNS服务器的root.cache文件包含了根名字服务器的有关信息
    80.退出交互模式的shell,应键入 C 。
    A <Esc>; B ^q C exit D quit
    81.将Windows C:盘(hda1)安装在Linux文件系统的/winsys目录下,命令是 B 。
    A root@l04.edu.cn:~#mount dev/had1 /winsys
    B root@l04.edu.cn:~#mount /dev/had1 /winsys
    C root@l04.edu.cn:~#mount /dev/had1 winsys
    D root@l04.edu.cn:~#mount dev/had1 winsys
    82.设超级用户root当前所在目录为:/usr/local,键入cd命令后,用户当前所在目录为 B 。
    A /home B /root C /home/root D /usr/local
    83.字符设备文件类型的标志是 B 。
    A p B c C s D l
    84.将光盘CD-ROM(hdc)安装到文件系统的/mnt/cdrom目录下的命令是 C 。
    A mount /mnt/cdrom B mount /mnt/cdrom /dev/hdc
    C mount /dev/hdc /mnt/cdrom D mount /dev/hdc
    85.将光盘/dev/hdc卸载的命令是 A 。
    A umount /dev/hdc B unmount /dev/hdc
    C umount /mnt/cdrom /dev/hdc D unmount /mnt/cdrom /dev/hdc
    86.在/home/stud1/wang目录下有一文件file,使用 D 可实现在后台执行命令,此命令将file文件中的内容输出到file.copy文件中。
    A cat file >;file.copy B cat >;file.copy C cat file file.copy & D cat file >;file.copy &
    87.在DNS配置文件中,用于表示某主机别名的是: B 。
    A NS B CNAME C NAME D CN
    88.可以完成主机名与IP地址的正向解析和反向解析任务的命令是: A 。
    A nslookup B arp C ifconfig D dnslook
    89.下列变量名中有效的shell变量名是: C 。
    A -2-time B _2$3 C trust_no_1 D 2004file
    90.qmail是 B 。
    A 收取邮件的协议 B 邮件服务器的一种 C 发送邮件的协议 D 邮件队列
    91.已知某用户stud1,其用户目录为/home/stud1。如果当前目录为/home,进入目录/home/stud1/test的命令是 C 。
    A cd test B cd /stud1/test C cd stud1/test D cd home
    92.已知某用户stud1,其用户目录为/home/stud1。分页显示当前目录下的所有文件的文件或目录名、用户组、用户、文件大小、文件或目录权限、文件创建时间等信息的命令是 D 。
    A more ls –al B more –al ls C more < ls –al D ls –al | more
    93.关于进程调度命令, B 是不正确的。
    A 当日晚11点执行clear命令,使用at命令:at 23:00 today clear
    B 每年1月1日早上6点执行date命令,使用at命令:at 6am Jan 1 date
    C 每日晚11点执行date命令,crontab文件中应为:0 23 * * * date
    D 每小时执行一次clear命令,crontab文件中应为:0 */1 * * * clear
    94.系统中有用户user1和user2,同属于users组。在user1用户目录下有一文件file1,它拥有644的权限,如果user2用户想修改user1用户目录下的file1文件,应拥有 B 权限。
    A 744 B 664 C 646 D 746
    95.如果想配置一台匿名ftp服务器,应修改 C 文件。
    A /etc/gateway B /etc/ftpservers C /etc/ftpusers D /etc/inetd.conf
    96.Samba服务器的进程由B 两部分组成 。
    A named和sendmail B smbd和nmbd C bootp和dhcpd D httpd和squid
    97.要配置NFS服务器,在服务器端主要配置 C 文件。
    A /etc/rc.d/rc.inet1 B /etc/rc.d/rc.M C /etc/exports D /etc/rc.d/rc.S
    98.为保证在启动服务器时自动启动DHCP进程,应对 B 文件进行编辑。
    A /etc/rc.d/rc.inet2 B /etc/rc.d/rc.inet1 C /etc/dhcpd.conf D /etc/rc.d/rc.S
    99.在配置代理服务器时,若设置代理服务器的工作缓存为64MB,配置行应为 D 。
    A cache 64MB B cache_dir ufs /usr/local/squid/cache 10000 16 256
    C cache_ mgr 64MB D cache_ mem 64MB
    100.安全管理涉及的问题包括保证网络管理工作可靠进行的安全问题和保护网络用户及网络管理对象问题。 C 属于安全管理的内容。
    A 配置设备的工作参数 B 收集与网络性能有关的数据
    C 控制和维护访问权限 D 监测故障
    101.以下命令对中,正确的是: B 。
    A ls和sl B cat和tac C more和erom D exit和tixe
    102. B 命令是在vi编辑器中执行存盘退出。
    A :q B ZZ C :q! D :WQ
    103.下列关于/etc/fstab文件描述,正确的是 D 。
    A fstab文件只能描述属于linux的文件系统 B CD_ROM和软盘必须是自动加载的
    C fstab文件中描述的文件系统不能被卸载 D 启动时按fstab文件描述内容加载文件系统
    104.通过文件名存取文件时,文件系统内部的操作过程是通过 C 。
    A 文件在目录中查找文件数据存取位置。B 文件名直接找到文件的数据,进行存取操作。
    C 文件名在目录中查找对应的I节点,通过I节点存取文件数据。
    D 文件名在中查找对应的超级块,在超级块查找对应i节点,通过i节点存取文件数据
    105.Linux将存储设备和输入/输出设备均看做文件来操作, C 不是以文件的形式出现。
    A 目录 B 软链接 C i节点表 D 网络适配器
    106.关于i节点和超级块,下列论述不正确的是 B 。
    A i节点是一个长度固定的表 B 超级块在文件系统的个数是唯一的
    C i节点包含了描述一个文件所必需的全部信息
    D 超级块记录了i节点表和空闲块表信息在磁盘中存放的位置
    107. D 设备是字符设备。
    A hdc B fd0 C hda1 D tty1
    108. B 目录存放着Linux的源代码。
    A /etc B /usr/src C /usr D /home
    109.关于文件系统的安装和卸载,下面描述正确的是 A 。
    A 如果光盘未经卸载,光驱是打不开的 B 安装文件系统的安装点只能是/mnt下
    C 不管光驱中是否有光盘,系统都可以安装CD-ROM设备
    D mount /dev/fd0 /floppy 此命令中目录/floppy是自动生成的
    110. B 不是进程和程序的区别。
    A 程序是一组有序的静态指令,进程是一次程序的执行过程
    B 程序只能在前台运行,而进程可以在前台或后台运行
    C 程序可以长期保存,进程是暂时的
    D 程序没有状态,而进程是有状态的
    111.文件exer1的访问权限为rw-r--r--,现要增加所有用户的执行权限和同组用户的写权限,下列命令正确的是 A 。
    A chmod a+x g+w exer1 B chmod 765 exer1
    C chmod o+x exer1 D chmod g+w exer1
    112.有关归档和压缩命令,下面描述正确的是 C 。
    A 用uncompress命令解压缩由compress命令生成的后缀为.zip的压缩文件
    B unzip命令和gzip命令可以解压缩相同类型的文件
    C tar归档且压缩的文件可以由gzip命令解压缩
    D tar命令归档后的文件也是一种压缩文件
    113.不是shell具有的功能和特点的是 C 。
    A 管道 B 输入输出重定向 C 执行后台进程 D 处理程序命令
    114.下列对shell变量FRUIT操作,正确的是: C 。
    A 为变量赋值:$FRUIT=apple B 显示变量的值:fruit=apple
    C 显示变量的值:echo $FRUIT D 判断变量是否有值:[ -f “$FRUIT” ]

    三.简答题:
    1.简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程。
    参考答案:
    Linux通过i节点表将文件的逻辑结构和物理结构进行转换。
    i节点是一个64字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在i节点表中最重要的内容是磁盘地址表。在磁盘地址表中有13个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。Linux文件系统通过把i节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的i节点号,通过该i节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。
    2.简述进程的启动、终止的方式以及如何进行进程的查看。
    参考答案:
    在Linux中启动一个进程有手工启动和调度启动两种方式:
    (1)手工启动
    用户在输入端发出命令,直接启动一个进程的启动方式。可以分为:
    ①前台启动:直接在SHELL中输入命令进行启动。
    ②后台启动:启动一个目前并不紧急的进程,如打印进程。
    (2)调度启动
    系统管理员根据系统资源和进程占用资源的情况,事先进行调度安排,指定任务运行的时间和场合,到时候系统会自动完成该任务。
    经常使用的进程调度命令为:at、batch、crontab。
    3. 简述DNS进行域名解析的过程。
    参考答案:
    首先,客户端发出DNS请求翻译IP地址或主机名。DNS服务器在收到客户机的请求后:
    (1)检查DNS服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;
    (2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;
    (3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。
    (4)若没有找到,则返回错误信息。
    4.系统管理员的职责包括那些?管理的对象是什么?
    参考答案:
    系统管理员的职责是进行系统资源管理、设备管理、系统性能管理、安全管理和系统性能监测。管理的对象是服务器、用户、服务器的进程及系统的各种资源等。
    5.简述安装Slackware Linux系统的过程。
    参考答案:
    (1)对硬盘重新分区。 (2)启动Linux系统(用光盘、软盘等)。
    (3)建立Linux主分区和交换分区。(4)用setup命令安装Linux系统。
    (5)格式化Linux主分区和交换分区(6)安装Linux软件包
    (7)安装完毕,建立从硬盘启动Linux系统的LILO启动程序,或者制作一张启动Linux系统的软盘。重新启动Linux系统。
    6.什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
    参考答案:
    静态路由是由系统管理员设计与构建的路由表规定的路由。适用于网关数量有限的场合,且网络拓朴结构不经常变化的网络。其缺点是不能动态地适用网络状况的变化,当网络状况变化后必须由网络管理员修改路由表。
    动态路由是由路由选择协议而动态构建的,路由协议之间通过交换各自所拥有的路由信息实时更新路由表的内容。动态路由可以自动学习网络的拓朴结构,并更新路由表。其缺点是路由广播更新信息将占据大量的网络带宽。
    7.进程的查看和调度分别使用什么命令?
    参考答案:
    进程查看的命令是ps和top。
    进程调度的命令有at,crontab,batch,kill。
    8.当文件系统受到破坏时,如何检查和修复系统?
    参考答案:
    成功修复文件系统的前提是要有两个以上的主文件系统,并保证在修复之前首先卸载将被修复的文件系统。
    使用命令fsck对受到破坏的文件系统进行修复。fsck检查文件系统分为5步,每一步检查系统不同部分的连接特性并对上一步进行验证和修改。在执行fsck命令时,检查首先从超级块开始,然后是分配的磁盘块、路径名、目录的连接性、链接数目以及空闲块链表、i-node。
    9.解释i节点在文件系统中的作用。
    参考答案:
    在linux文件系统中,是以块为单位存储信息的,为了找到某一个文件在存储空间中存放的位置,用i节点对一个文件进行索引。I节点包含了描述一个文件所必须的全部信息。所以i节点是文件系统管理的一个数据结构。
    10.什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
    参考答案:
    链接分硬链接和符号链接。
    符号链接可以建立对于文件和目录的链接。符号链接可以跨文件系统,即可以跨磁盘分区。符号链接的文件类型位是l,链接文件具有新的i节点。
    硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接的文件类型位是-,且硬链接文件的i节点同被链接文件的i节点相同。
    11.在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则。
    参考答案:
    磁盘簇(或i节点密度)是文件系统调度文件的基本单元。磁盘簇的大小,直接影响系统调度磁盘空间效率。当磁盘分区较大时,磁盘簇也应选得大些;当分区较小时,磁盘簇应选得小些。通常使用经验值。
    12.简述网络文件系统NFS,并说明其作用。
    参考答案:
    网络文件系统是应用层的一种应用服务,它主要应用于Linux和Linux系统、Linux和Unix系统之间的文件或目录的共享。对于用户而言可以通过NFS方便的访问远地的文件系统,使之成为本地文件系统的一部分。采用NFS之后省去了登录的过程,方便了用户访问系统资源。
    13.某/etc/fstab文件中的某行如下:
    /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2
    请解释其含义。
    参考答案:
    (1)第一列:将被加载的文件系统名;(2)第二列:该文件系统的安装点;
    (3)第三列:文件系统的类型;(4)第四列:设置参数;
    (5)第五列:供备份程序确定上次备份距现在的天数;
    (6)第六列:在系统引导时检测文件系统的顺序。
    14.Apache服务器的配置文件httpd.conf中有很多内容,请解释如下配置项:
    (1)MaxKeepAliveRequests 200 (2)UserDir public_html
    (3)DefaultType text/plain (4)AddLanguare en.en
    (5)DocumentRoot“/usr/local/httpd/htdocs”
    (6)AddType application/x-httpd-php.php.php.php4
    参考答案:
    (1)允许每次连接的最大请求数目,此为200;(2)设定用户放置网页的目录;
    (3)设置服务器对于不认识的文件类型的预设格式;
    (4)设置可传送语言的文件给浏览器;(5)该目录为Apache放置网页的地方;
    (6)服务器选择使用php4。
    15.某Linux主机的/etc/rc.d/rc.inet1文件中有如下语句,请修正错误,并解释其内容。
    /etc/rc.d/rc.inet1:
    ……
    ROUTE add –net default gw 192.168.0.101 netmask 255.255.0.0 metric 1
    ROUTE add –net 192.168.1.0 gw 192.168.0.250 netmask 255.255.0.0 metric 1
    参考答案:
    修正错误:
    (1)ROUTE应改为小写:route;(2)netmask 255.255.0.0应改为:netmask 255.255.255.0;
    (3)缺省路由的子网掩码应改为:netmask 0.0.0.0;
    (4)缺省路由必须在最后设定,否则其后的路由将无效。
    解释内容:
    (1)route:建立静态路由表的命令;(2)add:增加一条新路由;
    (3)-net 192.168.1.0:到达一个目标网络的网络地址;
    (4)default:建立一条缺省路由;(5)gw 192.168.0.101:网关地址;
    (6)metric 1:到达目标网络经过的路由器数(跳数)。
    16.试解释apache服务器以下配置的含义:
    (1)port 1080 (2)UserDir userdoc
    (3)DocumentRoot “/home/htdocs”
    (4)<Directory /home/htdocs/inside>;
    Options Indexes FollowSymLinks
    AllowOverride None
    Order deny,allow
    deny from all
    allow from 192.168.1.5
    </Directory>;
    (5)Server Type Standlone
    参考答案:
    Apache服务器配置行含义如下:
    (1)将apache服务器的端口号设定为1080;
    (2)设定用户网页目录为userdoc;
    (3)设定apache服务器的网页根目录:/home/htdocs;
    (4)在此apache服务器上设定一个目录/home/htdocs/inside,且此目录只允许IP地址为192.168.1.5的主机访问;
    (5)定义apache服务器以独立进程的方式运行。
    17.简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
    参考答案:
    (1)ftp有两种登录方式:匿名登录和授权登录。使用匿名登录时,用户名为:anonymous,密码为:任何合法email地址;使用授权登录时,用户名为用户在远程系统中的用户帐号,密码为用户在远程系统中的用户密码。
    区别:使用匿名登录只能访问ftp目录下的资源,默认配置下只能下载;而授权登录访问的权限大于匿名登录,且上载、下载均可。
    (2)ftp文件传输有两种文件传输模式:ASCII模式和binary模式。ASCII模式用来传输文本文件,其他文件的传输使用binary模式。
    (3)常用的ftp文件传输命令为:bin、asc、put、get、mput、mget、prompt、bye。

    四.编程与应用题:
    1.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。
    参考程序:
    #!/bin/sh
    FILENAME=
    echo “Input file name:”
    read FILENAME
    if [ -c "$FILENAME" ]
    then
    cp $FILENAME /dev
    fi
    2.请下列shell程序加注释,并说明程序的功能和调用方法:#!/bin/sh
    #!/bin/sh
    #
    # /etc/rc.d/rc.httpd
    #
    # Start/stop/restart the Apache web server.
    #
    # To make Apache start automatically at boot, make this
    # file executable: chmod 755 /etc/rc.d/rc.httpd
    #
    case "$1" in
    'start')
    /usr/sbin/apachectl start ;;
    'stop')
    /usr/sbin/apachectl stop ;;
    'restart')
    /usr/sbin/apachectl restart ;;
    *)
    echo "usage $0 start|stop|restart" ;;
    esac
    参考答案:
    (1)程序注释
    #!/bin/sh 定义实用的shell
    #
    # /etc/rc.d/rc.httpd 注释行,凡是以星号开始的行均为注释行。
    #
    # Start/stop/restart the Apache web server.
    #
    # To make Apache start automatically at boot, make this




    # file executable: chmod 755 /etc/rc.d/rc.httpd
    #
    case "$1" in #case结构开始,判断“位置参数”决定执行的操作。本程序携带一个“位置参数”,即$1
    'start') #若位置参数为start
    /usr/sbin/apachectl start ;; #启动httpd进程
    'stop') #若位置参数为stop
    /usr/sbin/apachectl stop ;; #关闭httpd进程
    'restart') #若位置参数为stop
    /usr/sbin/apachectl restart ;; #重新启动httpd进程
    *) #若位置参数不是start、stop或restart时
    echo "usage $0 start|stop|restart" ;; #显示命令提示信息:程序的调用方法
    esac #case结构结束
    (2)程序的功能是启动,停止或重新启动httpd进程
    (3)程序的调用方式有三种:启动,停止和重新启动。
    3.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。
    参考答案:
    #!/bin/sh
    i=1
    groupadd class1
    while [ $i -le 30 ]
    do
    if [ $i -le 9 ] ;then
    USERNAME=stu0${i}
    else
    USERNAME=stu${i}
    fi
    useradd $USERNAME
    mkdir /home/$USERNAME
    chown -R $USERNAME /home/$USERNAME
    chgrp -R class1 /home/$USERNAME
    i=$(($i+1))
    done

    4.编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。
    参考程序:
    #!/bin/sh
    i=1
    while [ $i -le 50 ]
    do
    userdel -r stud${i}
    i=$(($i+1 ))
    done
    5.某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:
    (1)在下午4 :50删除/abc目录下的全部子目录和全部文件;
    (2)从早8:00~下午6:00每小时读取/xyz目录下x1文件中每行第一个域的全部数据加入到/backup目录下的bak01.txt文件内;
    (3)每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;
    (4)在下午5:55将IDE接口的CD-ROM卸载(假设:CD-ROM的设备名为hdc);
    (5)在早晨8:00前开机后启动。
    参考答案:
    解决方案:
    (1)用vi创建编辑一个名为prgx的crontab文件;
    (2)prgx文件的内容:
    50 16 * * * rm -r /abc/*
    0 8-18/1 * * * cut -f1 /xyz/x1 >;>; /backup/bak01.txt
    50 17 * * * tar zcvf backup.tar.gz /data
    55 17 * * * umount /dev/hdc
    (3)由超级用户登录,用crontab执行 prgx文件中的内容:
    root@xxx:#crontab prgx;在每日早晨8:00之前开机后即可自动启动crontab。
    6.设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。
    参考答案:
    (1)编写shell程序fileback:
    #!/bin/sh
    DIRNAME=`ls /root | grep bak`
    if [ -z "$DIRNAME" ] ; then
    mkdir /root/bak
    cd /root/bak
    fi
    YY=`date +%y`
    MM=`date +%m`
    DD=`date +%d`
    BACKETC=$YY$MM$DD_etc.tar.gz
    tar zcvf $BACKETC /etc
    echo "fileback finished!"
    (2)编写任务定时器:
    echo "0 0 1 * * /bin/sh /usr/bin/fileback" >; /root/etcbakcron
    crontab /root/etcbakcron
    或使用crontab -e 命令添加定时任务:
    0 1 * * * /bin/sh /usr/bin/fileback
    7.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?
    参考答案:(1)第一种方法:
    用户应使用crontab –e 命令创建crontab文件。格式如下:
    0 0 * * sun cp –r /user/backup /tmp
    (2)第二种方法:
    用户先在自己目录下新建文件file,文件内容如下:
    0 * * sun cp –r /user/backup /tmp
    然后执行 crontab file 使生效。
    8.设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。
    参考答案: 建立程序 Pro16如下:
    #!/bin/sh
    i=1
    while [ i -le 50 ]
    do
    if [ -d /userdata ];then
    mkdir -p /userdata/user$i
    chmod 754 /userdata/user$i
    echo "user$i"
    let "i = i + 1" (或i=$(($i+1))
    else
    mkdir /userdata
    mkdir -p /userdata/user$i
    chmod 754 /userdata/user$i
    echo "user$i"
    let "i = i + 1" (或i=$(($i+1))
    fi
    done


    五、多选题
    1.关于硬链接的描述正确的(BE)。
    A 跨文件系统 B不可以跨文件系统 D可以做目录的连接
    C 为链接文件创建新的i节点 E链接文件的i节点同被链接文件的i节点
    2.在网站发布用户wang的个人网页时,需要创建用户网页目录,假定用户网页目录设定为web
    (用户目录在/home目录下),如下描述正确的是(BCE)
    A 存放用户网页的绝对路径/wang/web B存放用户网页的目录~wang/
    C 存放用户网页的绝对路径/home/wang/web D存放用户网页的绝对路径/home/web
    E 在本机访问用户wang的个人网页的URL地址http://localhost/~wang/
    3.在一台WWW服务器上将端口号设定为8000,默认的网页文件index.html,服务器网页的根目录/www。在本机访问服务器时,正确的用法是(BDE)
    A 浏览器访问该服务器的URL地址http://localhost/
    B 浏览器访问该服务器的URL地址http://localhost:8000/
    C 浏览器访问该服务器的用户li网页URL地址http://localhost/~li
    D 浏览器访问该服务器的用户li网页URL地址http://localhost:8000/~li
    E 浏览器访问该服务器的URL地址localhost:8000/
    4.在shell编程中关于$2的描述正确的是(CE)
    A 程序后携带了两个位置参数 B 宏替换 C 程序后面携带的第二个位置参数
    D 携带位置参数的个数 E 用$2引用第二个位置参数
    5.某文件的权限是 - r w x r - - r- -,下面描述正确的是(CD)
    A 文件的权限值是755 B 文件的所有者对文件只有读权 限
    C 文件的权限值是 744 D 其他用户对文件只有读权限 E同组用户对文件只有写权限
    6.关于OpenSSH的作用的描述正确的是(ACE)
    A 开放源代码的安全加密程序 B OpenSSH常用于为http协议加密
    C OpenSSH用于提高远程登录访问的安全性 D 它和telnet实用同样的端口号
    E OpenSSH是免费下载的应程序
    7.关于NFS服务器描述正确的是(BC)
    A 网络中实现Windows系统之间文件系统共享的应用软件
    B 网络中实现Linux系统之间文件系统共享的应用软件
    C 网络中实现Unix系统之间文件系统共享的应用软件
    D 网络中实现Windows系统和Unix之间文件系统共享的应用软件
    E 网络中实现Windows系统和Linux之间文件系统共享的应用软件
    8.关于sed描述正确的是(ABD)
    A sed 是Linux系统中的流编辑器 B sed 是UNIX系统中的流编辑器
    C sed 网络文件系统的类型

    D 利用管道对标准输入/标准输入的数据进行编辑和组合
    E sed是NFS的应用程序
    9.关于限制磁盘限额,描述正确的是(ABD)
    A 使用edquota可以监控系统所有用户使用的磁盘空间,并在接近极限时提示用户
    B 用户组的磁盘限额是用户组内所有用户予设磁盘空间总和
    C 单个用户的磁盘限额就是该用户所在用户组内所有磁盘限额的总合
    D 在Linux系统下限制用户使用的磁盘空间可以使用edquota
    E 用户组的磁盘限额就是该用户组内拥有最大磁盘限额值的用户的磁盘限额
    10.关于建立系统用户的正确描述是()
    A 在Linux系统下建立用户使用adduser命令
    B 每个系统用户分别在/etc/passwd和/etc/shadow文件中有一条记录
    C 访问每个用户的工作目录使用命令“cd /用户名”
    D 每个系统用户在默认状态下的工作目录在/home/用户名
    E 每个系统用户在/etc/fstab文件中有一条记录
  • linux 学习11条建议

    2010-03-12 22:41:11

     

    转自:http://www.51testing.com/html/00/n-208400.html

    一、从基础开始

      常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基的。例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的,只要了解了Linux的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux就是希望构架网站,根本没有想到要先了解一下Linux的基础。这是相当困难的。

      二、Linux命令是必须学习

      虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。举一个例子:Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手.它的功能实在太强了,在配合exec 参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。

      不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解Linux系统:

      安装和登录命令:login、shutdown、halt、reboot、mount、umount、chsh

      文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln

      系统管理相关命令:df、top、free、quota、at、lp、adduser、groupaddkill、crontab、tar、unzip、gunzip、last

      网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup

      系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo、pswho

      三、选择一本好的工具书

      工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多,笔者强烈建议阅读影印本的“O'Reilly原版Linux图书http://www.oreilly.com.cn/”,而且出版社还提供了一个非常好的路线图:http://www.oreilly.com.cn/guide/guide_linux.php

      四、选择一个适合你的Linux发行版本

      目前全球有超过一百多个Linux发行版本,在国内也能找到十几个常见版本。如何选择请根据你的需求和能力,RedhatLinux和 DebianLinux是网络管理员的理想选择。对于英语不是很好的读者红旗 Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。

      五、养成在命令行下工作

      一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢,但是熟悉后,您未来的学习之路将是以指数增加的方式增长的。从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。即使是通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。

      六、选择一个适合你的Linux社区

      随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。建议选择一些适于初学者的Linux社区。

      七、勤于实践

      要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。对Linux命令熟悉后,你可以开始搭建一个小的Linux网络,这是最好的实践方法。Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。

    八、如何得到联机帮助

      和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。

      1.主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。

      2.查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。

      九、在Linux论坛获取帮助

      如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。 Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人,Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问,否则只会得到到草率的回答或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。最好先搜寻一下论坛是否有您需要的文章。这样可以获得事半功倍的效果。

      下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练,笔者五分钟后就给出了解决方法: “首先备份原文件到其他目录,然后删掉/usr/local/unispim/unispimsp.ksc,编辑 /usr/local/unispim/unispimsp.ini,最后重启动计算机,生成新的unispimsp.ksc。”另外得到回复后如果问题解决,向帮助过你的人发个说明,让他们知道问题是怎样解决的,这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。

      下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题我想即使Linux高手也很难快速准确精练的回答你。

      你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。另外把这个问题放在其他Linux社区请求帮助也是一种选择。如果得不到答案,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。这时换一个社区是不错的选择。

      另外发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。

      十、用Unix思维学习Linux

      Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。

      十一、学习专业英文

      如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。

      附:

      1.掌握至少50个以上的常用命令。

      2.熟悉Gnome/KDE等X-windows桌面环境操作。

      3.掌握.tgz、.rpm等软件包的常用安装方法。

      4.学习添加外设,安装设备驱动程序(比如网卡)。

      5.熟悉Grub/Lilo引导器及简单的修复操作。

      6.熟悉Linux文件系统?和目录结构。

      7.掌握vi,gcc,gdb等常用编辑器,编译器,调试器。

      8.理解shell别名、管道、I/O重定向、输入和输出以及shell脚本编程。

      9.学习Linux环境下的组网。

  • 软件测试面试题

    2010-03-11 16:17:18

    软件测试题目
    一、   判断题 (每题2分,20)

    1 、软件测试就是为了验证软件功能实现的是否正确,是否完成既定目标的活动,所以软件测试在软件工程的后期才开始具体的工作。 (初级)            ( × )

    2 、发现错误多的模块,残留在模块中的错误也多。 ( √ ) (初级)

    3 、测试人员在测试过程中发现一处问题,如果问题影响不大,而自己又可以修改,应立即将此问题正确修改,以加快、提高开发的进程。( × )(初级)

    4 、单元测试通常应该先进行 “ 人工走查 ” ,再以白盒法为主,辅以黑盒法进行动态测试。

    ( √ )(中级)

    5 、功能测试是系统测试的主要内容,检查系统的功能、性能是否与需求规格说明相同。( √ )(中级)

    6 、软件质量管理即 QM 由 QA 和 QC 构成,软件测试属于 QC 的核心工作内容。(√)(高级)

    7 、软件测试只能发现错误,但不能保证测试后的软件没有错误。 (√)

    8 、软件就是程序。 (X)

    9 、测试只要做到语句覆盖和分支覆盖,就可以发现程序中的所有错误。 (X)

    10 、 I18N 测试是指对产品做出具有国际性的规划,而 L10N 测试则是指对软件做出符合本地需求更改工作。(√)【高级】


    二、    选择题  (每题2分   20 )

    1、  进行软件质量管理的重要性有:( ABCD )【中级】

    A 、维护降低成本          B 、法律上的要求       C 、市场竞争的需要

    D 、质量标准化的趋势      E 、软件工程的需要     F 、 CMM 过程的一部分

    G 、方便与客户进一步沟通为后期的实施打好基础

    2 、以测试的形态分测试可以分为:( ABC )【中级】

    A 、建构性测试            B 、系统测试           C 、专项测试

    D 、单元测试              E 、组件测试           F 、集成测试

    3 、选出属于黑盒测试方法的选项( ABC )【初级】

    A 、测试用例覆盖          B 、输入覆盖           C 、输出覆盖

    D 、分支覆盖              E 、语句覆盖            F 、条件覆盖

    4 、编写测试计划的目的是:( ABC )【中级】

    A 、使测试工作顺利进行   B 、使项目参与人员沟通更舒畅   C 、使测试工作更加系统化

    D 、软件工程以及软件过程的需要     E 、软件过程规范化的要求    F 、控制软件质量

    5 、依存关系有 4 种分别是:( ABCD )【高级】

    A 、开始-结束           B 、开始-开始                 C 、结束-开始

    D 、结束-结束           E 、开始-实施-结束           F 、结束-审核-开始

    6 、软件质量管理( QM )应有质量保证( QA )和质量控制( QC )组成,下面的选项属于 QC 得是:( ABC )【高级】

    A 、测试                 B 、跟踪                       C 、监督

    D 、制定计划             E 、需求审查                   F 、程序代码审查

    7 、实施缺陷跟踪的目的是:( ABCD )【中级】

    A 、软件质量无法控制          B 、问题无法量化          C 、重复问题接连产生

    D 、解决问题的知识无法保留   E 、确保缺陷得到解决   F 、使问题形成完整的闭环处理

    8 、使用软件测试工具的目的:( ABC )【中级】

    A 、帮助测试寻找问题         B 、协助问题的诊断       C 、节省测试时间

    D 、提高 Bug 的发现率    E 、更好的控制缺陷提高软件质量    F 、更好的协助开发人员

    9 、典型的瀑布模型的四个阶段是:( ABCD )【高级】

    A 、分析                        B 、设计                    C 、编码

    D 、测试                        E 、需求调研                 F 、实施

    10 、 PSP 是指个人软件过程 ,是一种可用于( A )、( B )和( C )个人软件工作方式的自我改善过程。【高级】

    A 、控制                        B 、管理                     C 、改进

    D 、高效                        E 、充分                     F 、适宜


    三、    问答题

    1、 测试人员在软件开发过程中的任务是什么?(初级)(5分)

           答:1、寻找 Bug ;

    2 、避免软件开发过程中的缺陷;

    3 、衡量软件的品质;

    4 、关注用户的需求。

    总的目标是:确保软件的质量。

    2、 在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?(初级)(6分)

    答:一条 Bug 记录最基本应包含:编号、 Bug 所属模块、 Bug 描述、 Bug 级别、发现日期、发现人、修改日期、修改人、修改方法、回归结果等等;要有效的发现 Bug 需参考需求以及详细设计等前期文档设计出高效的测试用例,然后严格执行测试用例,对发现的问题要充分确认肯定,然后再向外发布如此才能提高提交 Bug 的质量。


    3、 界面测试题及设计题。请找出下面界面中所存在的问题并分别列出;用黑盒测试的任何一种方法设计出此登陆窗体的测试用例。(中级)(6分)
                


    答:1、窗体的标题栏中为空,没有给出标题。
        2 、用户名和密码控件的字体不一致并且没有对齐。

        3 、文本框的大小不一致没有对其。

        4 、确定和取消按钮控件的大小不一致。


    4、 黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点!(中级)(5分)

    答:黑盒测试的优点有 :
    1 )比较简单,不需要了解程序内部的代码及实现;

    2 )与软件的内部实现无关;

    3 )从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;

    4 )基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;

    5 )在做软件自动化测试时较为方便。

    黑盒测试的缺点有:
    1 )不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的 30% ;

    2 )自动化测试的复用性较低。

    白盒测试的优点有:

    帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。

    白盒测试的缺点有:

    1 )程序运行会有很多不同的路径,不可能测试所有的运行路径;

    2 )测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;

    3 )系统庞大时,测试开销会非常大。

    5、 根据自己的理解回答什么是软件测试,软件测试分为哪几个阶段。(初级)(5分)

    答:软件测试是一个为了寻找软件中的错误而运行软件的过程,一个成功的测试是指找到了迄今为止尚未发现的错误的测试。

       软件测试一般分为单元测试、集成测试和系统测试。

    6、 根据自己的理解什么是测试用例和测试规程,设计一个测试用例应当从哪几方面考虑?(中级)(10分)

    答:狭义的讲,一个测试用例就是测试人员用以测试被测软件的某个特性或特性组合的一组数据。这组数据可能是从用户处得来的实际的一组数据,也可能是测试人员专门设计出来的测试软件某些功能的一组数据。

        测试规程就是详细的对测试用例设计方法、测试方法、测试工具、测试环境和测试数据进行描述的文档,还可以包括能把某个或某一组测试用例应用到被测软件上完成某项测试的一系列的操作步骤。

    设计测试用例应当从以下几方面考虑:边界值,等价类划分,有效 / 无效值等。

    7、     什么是软件质量保证?软件质量保证人员与开发人员的关系如何?(高级)    (10分)

           答:软件质量保证就是通过确保软件过程的质量,来保证软件产品的质量。

         软件质量保证人员和开发人员之间具有管理上的严格的独立性,两个小组的管理员都不能越权管理另一组,但都可以向更高层的管理者汇报软件开发中的问题

    四、    设计题

    1).输入三个整数,判断三个整数能否构成一个三角形,请用黑盒测试方法中的一种设计出相应的测试用例并详细说明所使用的黑盒测试方法。(中高级)  (15分)


    本文来自CSDN博客,转载请标明出处:file:///F:/救命稻草/C%23笔试题目(综合版样题)%20-%20郑长风%20-%20CSDN博客.htm

  • 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)。

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

  • 手机上网GPRS和WAP的区别

    2010-01-26 10:56:52

    常常听到有人问GPRS和WAP有何区别,或问手机标称的GPRS class 10是什么概念。

    GPRS:通用分组无线业务,它是利用“包交换”概念所发展出得一套无线数据传输方式。GSM系统在数据传输时采用与语音相同的电路交换方式,需要预先建立从发送端到接收端的持续连接,在通信过程中无论有无数据传出,始终独占着信道。而GPRS的分组交换则是把数据分成若干小的数据包,通过不同路径同时或先后传输。GPRS并不独占固定的电路,而是即可以一个用户占用多个信道,又可以多个用户占用一个信道。因此,GPRS可以在不浪费网络资源的情况下实现“时刻在线”,相较与原来的GSM的拨号方式,上网方便了许多,更重要的是GPRS可以实现高速数据传输。

    GPRS属于2.5G技术,因此,一些人认为它是GSM网络的替代。其实,GPRS是GSM在数据方面的补充,它通过增加一些硬件设备和软件升级,在原有GSM网上叠加了一个新的数据网络。GPRS也不替代GSM原有的数据功能。对于多数使用GPRS的手机用户来说,既可以使用GPRS上网,也可以用GSM原来的拨号方式上网。还有些人认为GPRS是WAP的替代,好像有了GPRS,WAP就会消失。其实,GPRS和WAP属于两种不同的范畴,WAP是移动互联网内容和服务的一种协议,而GPRS是无线数据的一种传输方式。我们可以把GPRS想像成一条快速公路,WAP则是公路上行驶的车辆,通过这条公路,我们可以快速便捷的享受各种内容和服务。GPRS的开通,对WAP的发展是一种促进。使用GPRS终端,可以快捷、方便的享受到各种WAP服务。

    GPRS能够提供的业务有移动商务、移动信息服务、移动互联网业务、虚拟专业网业务、定位服务、多媒体业务等,象网上聊天、移动炒股、远程监控、远程计数等消流量高频率传输的数据业务特别适合GPRS的特点。

    我们常常说到GPRS class 10,一些朋友就问啦:GPRS class 10是什么啊?其实,不管是GPRS class 10还是GPRS class 8都是指GPRS终端能使用的信道数量,象手机的GPRS功能多为 class 8、class 10、 class 12的,它们并不是指有8、10、12个信道可以供你使用,它们的总信道都是5个,一些人又闹不明白了,那还有什么区分啊?答案--其实它们的区分主要在于最大可以使用的上行信道,它们的下行信道最大都是可以使用4个信道的;我举些例子来说吧,象我们OT735的是GPRS class 10,它最高支持2个上行信道,它可以同时使用4个下行信道和1个上行信道,又或者可以同时使用3个上行信道和2个下行信道;而GPRS class 12可以支持4个上行信道,不但可以同时使用4个下行信道和1个上行信道,反之也可以同时使用1个下行信道和4个上行信道;GPRS class 8只支持1个上行信道,它只能同时使用4个(或以下)下行信道和1个上行信道。  

    1.WAP和GPRS有什么区别啊?

    严格的说wap和gprs并不能相提并论的加以比较,因为这是两个不同的技术概念。

    简单的说,wap是一种无线网络应用协议,而gprs是实现wap应用的一种网络传输技术方式。
    形象的说,wap如果是一封信,gprs就是送信到达的邮车。

    有时大家所说的gprs流量包月后,“上wap”还收费,其实是指通过csd方式连接wap仍会收费。

    wap现在有两种承载方式----
           一是csd(电路交换数据传送方式)
           二是gprs方式(通用无线分组业务)
    cds和gprs使用资费有差别
          csd(电路交换数据传送方式)这个是按分钟收费的,一般0.15元/分钟。
          gprs方式(通用无线分组业务)这个是按网络信息交换流量来收费的。但他们在网络终端可以实现的功能是一样的。
         csd必须基于GSM电路交换,通过拨号17266接入WAP服务,传输速率9.6Kbps,
         gprs理论上的最高传输速率为171.2Kbps,目前的实际传输速率一般为40Kbps左右,
    gprs更为优越的是按流量计费,比csd按时间计费要合理,同时gprs不会影响打进和呼出电话,而csd因为要占用电话电路,使用时无法接受来电。


    2.wap接入点cmwap和cmnet有什么不同?

            CMWAP 和 CMNET 只是移动人为划分的两个wap接入方式。前者是为手机WAP上网而设立的,后者则主要是为PC、笔记本电脑、PDA等利用GPRS上网服务。它们在实现方式上并没有任何差别,但因为定位不同,所以和CMNET相比,CMWAP便有了部分限制,资费上也存在差别。

    连网方式不同----
            就是说通过cmwap的方式访问,需要走移动的网关通过http协议去连接,这样的后果就是速度会变慢,相信很多朋友都用过代理服务器吧,就是那个感觉,但用手机的浏览器访问wap网站或使用网络功能,不会感觉到接入点的速度差别.因为手机本身处理速度有限制。
            而通过cmnet来连接的,就是直接连接到internet上的服务器,速度会比cmwap的快一些。如果用手机做猫,连接电脑上网时才会体现出来。cmwap速度会很慢,而有很多限制,甚至有的地区根本无法用cmwap连接电脑,cmnet是移动专门的提供无线网络服务的接入点,速度基本和电话拨号上网相当。

    资费不同----
            各地cmwap一般是10-20元包月,而cmnet一般是100-200元包月。如果仅仅是在手机上使用网络服务的话,选择cmwap包月无疑是最实惠的。


    3.怎么才能确认手机上网或其他业务使用产生的数据流量是 cmwap 还是cmnet?

            一般可以从“手机wap设置”上确认。但还是建议以查询本机的gprs使用详单为准。
    这里要注意----如果是手机+电脑,通过手机做猫让电脑上网,如果不更改接入点,都是默认产生cmnet流量,使用此业务手机内wap设置不会起作用。
            ----同时部分手机内置邮件收发程序也是需要默认的cmnet连接,否则无法收发邮件。这个也应该引起注意。


    4.我是cmwap流量无限包月用户,如果避免产生cmnet包月外的流量?

          这是很多朋友担心的问题,其实这个东西没有那么复杂^_^。
           只要你的gprs正确设置了 接入点名称是 cmwap,就放心大胆的用它上网吧,绝对不会有其他的cmnet流量。不论是你用什么软件,什么浏览器,浏览wap网站,浏览www网站,qq聊天,只要是设置使用cmwap就不会另外收费,就这么简单。(注意----用手机做猫,让电脑上网,此时手机内wap设置不会起作用,此时手机内设置为cmwap也可能产生cmnet流量!!!!)
           打个比方,我们家里的汽车是要每月交几百元养路费的,而自行车就没有,就这么简单。
    你用cmwap就像你骑自行车一样,走公路也好乡间小路也好,都是不用再交费的。因为你骑的是自行车,交通稽查不会拦住你向你要养路费。
            同时建议不要在手机上保留cmnet的gprs接入设置,防止误操作或者一些默认cmnet流量的软件自动调用cmnet接入。  


    5.使用cmwap接入方式能用手机浏览www网站吗?

           可以,只要你的手机有支持www的浏览器,或者使用ucweb等java软件,通过正确设置完全可以用cmwap接入方式浏览www网站。


    6.如何通过wap(gprs)下载铃声,图片,java游戏、电子书,手机主题等资源?

          现在提供wap下载的网站有不少,推荐使用手机之家的上传服务和wap下载服务,(系统稳定,网速快)
    步骤----
           1.电脑登陆手机之家网站首页上传自己想下载到手机的资源(分类上传地址见此帖----http://bbs.imobile.com.cn/thread-1250503-1-1.html),或者通过搜索找到自己想下载的资源编号。
          2.手机wap登陆 17wap.com   ----点击进入“free下载”----输入相应编号----下载到手机。
          3.也可使用wap收藏夹功能,更快捷的下载资源。


    7.联通 GSM 和 CDMA手机可以访问wap网站吗?

           可以!
           一说到wap好像是移动的专区,其实这是个天大的误会!联通gsm,cdma(cdma1X)网络手机都可以访问wap网站。

          移动GSM网络访问wap网站有两种方式----csd (按分钟计费)   
                                                                      ----GPRS(General Packet Radio Service)通用无线分组业务【按流量计费】

          联通GSM网络访问wap网站只有一种方式----csd (按分钟计费)
          联通CDMA(CDMA1X)网络访有两种上网业务----联通“互动视界”和“掌中宽带”,前者是手机上网业务,后者主要为电脑实现无线上网服务。两者资费有差别。但都是依托CDMA(CDMA1X)网络的 码分多址 (Code Division Multiple Access)【按流量计费】技术。

           只是由于地域营运商的缘故,有些地区联通没有开通wap服务。
           因为WAP是一种技术标准,WAP支持绝大多数无线网络,包括GSM,CDMA。但是联通和移动的wap设置肯定是不同的,可以咨询当地的联通客服取得相应数据

  • 华为

    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.

  • sql server2000 查重和显示行号问题

    2008-06-10 17:30:35

    显示行号:

    Select no=Identity(int,1,1),* Into #temptable From titles --Order By SortField
    Select * From #temptable  --Where no>=6 And no < 10
    Drop Table #temptable

    查重:

    use pubs

    select au_lname from authors group by au_lname having count(1)>1

  • SQL server 2000 面试题

    2008-06-06 15:03:03

    (转载)某外企SQL Server面试题(数据库面试题)
    SQL Server面试题, 数据库面试题
    Question 1:Can you use a batch SQL or store procedure to calculating the Number of Days

    in a Month
    Answer 1:找出当月的天数

     程序代码
    select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)

    +'-'+cast(month(getdate()) as varchar)+'-01' as datetime))))

    Question2:Can you use a SQL statement to calculating it!
    How can I print "10 to 20" for books that sell for between $10 and $20,"unknown" for

    books whose price is null, and "other" for all other prices?
    Answer 2:
    select bookid,bookname,price=case when price is null then 'unknown'
    when price between 10 and 20 then '10 to 20' else price end
    from books

    Question3:Can you use a SQL statement to finding duplicate values!
    How can I find authors with the same last name?
    You can use the table authors in datatabase pubs. I want to get the result as below:
    Output:

     程序代码
    au_lname number_dups
    ---------------------------------------- -----------
    Ringer 2

    (1 row(s) affected)
    Answer 3
    select au_lname,number_dups=count(1) from authors group by au_lname

    Question4:Can you create a cross-tab report in my SQL Server!
    How can I get the report about sale quality for each store and each quarter and the

    total sale quality for each quarter at year 1993?
    You can use the table sales and stores in datatabase pubs.
    Table Sales record all sale detail item for each store. Column store_id is the id of

    each store, ord_date is the order date of each sale item, and column qty is the sale

    qulity. Table stores record all store information.
    I want to get the result look like as below:
    Output:

     程序代码
    stor_name Total Qtr1 Qtr2 Qtr3 Qtr4
    ---------------------------------------- ----------- ----------- ----------- -----------

    -----------
    Barnum's 50 0 50 0 0
    Bookbeat 55 25 30 0 0
    Doc-U-Mat: Quality Laundry and Books 85 0 85 0 0
    Fricative Bookshop 60 35 0 0 25
    Total 250 60 165 0 25


    Answer 4:用动态SQL实现

    Question5: The Fastest Way to Recompile All Stored Procedures
    I have a problem with a database running in SQL Server 6.5 (Service Pack 4). We moved

    the database (object transfer) from one machine to another last night, and an error

    (specific to a stored procedure) is cropping up. However, I can't tell which procedure

    is causing it. Permissions are granted in all of our stored procedures; is there a way

    from the isql utility to force all stored procedures to recompile?

    Tips: sp_recompile can recomplie a store procedure each time
    Answer 5:在执行存储过程时,使用 with recompile 选项强制编译新的计划;使用sp_recompile系

    统存储过程强制在下次运行时进行重新编译

    Question6: How can I add row numbers to my result set?
    In database pubs, have a table titles , now I want the result shown as below,each row

    have a row number, how can you do that?
    Result:

     程序代码
    line-no title_id
    ----------- --------
    1 BU1032
    2 BU1111
    3 BU2075
    4 BU7832
    5 MC2222
    6 MC3021
    7 MC3026
    8 PC1035
    9 PC8888
    10 PC9999
    11 PS1372
    12 PS2091
    13 PS2106
    14 PS3333
    15 PS7777
    16 TC3218
    17 TC4203
    18 TC7777


    Answer 6:
    --SQL 2005的写法
    select row_number() as line_no ,title_id from titles
    --SQL 2000的写法
    select line_no identity(int,1,1),title_id into #t from titles
    select * from #t
    drop table #t

    Question 7: Can you tell me what the difference of two SQL statements at performance of

    execution?
    Statement 1:

     程序代码
    if NOT EXISTS ( select * from publishers where state = 'NY')
    begin
    Select 'Sales force needs to penetrate New York market'
    end
    else
    begin
    Select 'We have publishers in New York'
    end
    Statement 2:
    if EXISTS ( select * from publishers where state = 'NY')
    begin
    Select 'We have publishers in New York'
    end
    else
    begin
    Select 'Sales force needs to penetrate New York market'
    end

    Answer 7:不同点:执行时的事务数,处理时间,从客户端到服务器端传送的数据量大小

    Question8: How can I list all California authors regardless of whether they have written

    a book?
    In database pubs, have a table authors and titleauthor , table authors has a column

    state, and titleauhtor have books each author written.
    CA behalf of california in table authors.
    Answer 8:
    select * from authors where state='CA'

    Question9: How can I get a list of the stores that have bought both 'bussiness' and

    'mod_cook' type books?
    In database pubs, use three table stores,sales and titles to implement this requestment.
    Now I want to get the result as below:
    stor_id stor_name
    ------- ----------------------------------------
    ...
    7896 Fricative Bookshop
    ...
    ...
    ...
    Answer 9:

     程序代码
    select distinct a.stor_id, a.stor_name from stores a,sales b,titles c
    where a.stor_id=b.stor_id and b.title_id=c.title_id and c.type='business' and
    exists(select 1 from sales k,titles g where stor_id=b.stor_id
    and k.title_id=g.title_id and g.type='mod_cook')

     


    Question10: How can I list non-contignous data?
    In database pubs, I create a table test using statement as below, and I insert several

    row as below

     程序代码
    create table test
    ( id int primary key )
    go

    insert into test values (1 )
    insert into test values (2 )
    insert into test values (3 )
    insert into test values (4 )
    insert into test values (5 )
    insert into test values (6 )
    insert into test values (8 )
    insert into test values (9 )
    insert into test values (11)
    insert into test values (12)
    insert into test values (13)
    insert into test values (14)
    insert into test values (18)
    insert into test values (19)
    go


    Now I want to list the result of the non-contignous row as below,how can I do it?

     程序代码
    Missing after Missing before
    ------------- --------------
    6 8
    9 11
    ...

    Answer 10:
    select id from test t where not exists(select 1 from test where id=t.id+1)
    or not exists(select 1 from test where id=t.id-1)

    Question11: How can I list all book with prices greather than the average price of books

    of the same type?
    In database pubs, have a table named titles , its column named price mean the price of

    the book, and another named type mean the type of books.
    Now I want to get the result as below:

     程序代码
    type     title                                 price
    business The Busy Executive's Database Guide   19.9900

    Answer 11:

     程序代码
    select a.type,a.title,a.price from titles a,
    (select type,price=avg(price) from titles group by type)b
    where a.type=b.type and a.price>b.price


    试题点评:通览整个试题,我们不难发现,这份试题是针对SQL Server数据库人员的。而从难度分析

    上来看,这份试题也属于同类试题中比较难的了。之所以说它难,首先是限定时间的全英文试题;其

    次,尽管这份试题主要是考核开发能力,但却涉及到了算法的选择和性能的调优;最后,这份试题还

    夹进了SQL Server数据库的升级问题。因此,综上所述,我们估计这是一家从事程序外包工作的外企

    招聘后台开发或与后台开发相关的SQL Server高级程序员的试题。

     

  • loadrunner 压力测试

    2007-12-14 13:50:00

     

      压力测试之前,最要不要急于录制脚本。先针对性能需求,设计好场景。同时分析问题原因也是关键的一步。

Open Toolbar