最新计算机类企业应聘笔试题精品.docx
《最新计算机类企业应聘笔试题精品.docx》由会员分享,可在线阅读,更多相关《最新计算机类企业应聘笔试题精品.docx(26页珍藏版)》请在冰豆网上搜索。
最新计算机类企业应聘笔试题精品
1.文件格式系统有哪几种类型?
分别说说win95、win98、winMe、w2k、winNT、winXP分别支持那些文件系统。
2.分别填入一个语句,完成下面的函数,通过递归计算数组a[100]的前n个数之和。
Intsum(inta[],intn)
{
if(n>0)return___________________________;
elsereturn________________________;
}
3.写出你所知道的3种常用的排序方法,并用其中一种方法设计出程序为数组a[100]排序。
4.什么是兼容性测试?
兼容性测试侧重哪些方面,请按照优先级用矩阵图表列出。
(这题的第二问我不会答,所以原题目记得不是很清楚,大家能看明白问什么就好)
5.我现在有个程序,发现在WIN98上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
6.翻译,中——英,有关P2P点对点文件传输的原理。
7.翻译,英——中,有关互联网的发展对商务、学习、交流的影响。
笔试完了是初步的面试
先问了个问题:
FAT16/FAT32/NTFS哪个的安全性最好,为什么?
(不会答)
又做了两道题,
一题是关于C++类的继承,看程序写出输出结果,A是虚类,B继承A,跟一般C++的书上的习题差不多。
一题是写出在32位机器下,计算几个变量的size,
测试驱动的英文是testdriver;是指一个程序或测试工具用于根据测试套执行软件。
测试驱动开发与测试驱动设计的区别:
测试驱动开发,是通过测试定义所要开发的功能的接口,然后实现功能的开发过程。
对于测试驱动设计,在XP中似乎已经消失了,而是被测试驱动开发所取代。
另外在XP中有用于描述设计的,SimpleDesign,DesignImprovement。
测试驱动开发的基本过程:
1)明确当前要完成的功能。
可以记录成一个TODO列表。
2)快速完成针对此功能的测试用例编写。
3)测试代码编译不通过。
4)编写对应的功能代码。
5)测试通过。
6)对代码进行重构,并保证测试通过。
7)循环完成所有功能的开发。
测试驱动开发的原则:
1)测试隔离。
不同代码的测试应该相互隔离。
对一块代码的测试只考虑此代码的测试,不要考虑其实现细节(比如它使用了其他类的边界条件)。
2)一顶帽子。
开发人员开发过程中要做不同的工作,比如:
编写测试代码、开发功能代码、对代码重构等。
做不同的事,承担不同的角色。
开发人员完成对应的工作时应该保持注意力集中在当前工作上,而不要过多的考虑其他方面的细节,保证头上只有一顶帽子。
避免考虑无关细节过多,无谓地增加复杂度。
3)测试列表。
需要测试的功能点很多。
应该在任何阶段想添加功能需求问题时,把相关功能点加到测试列表中,然后继续手头工作。
然后不断的完成对应的测试用例、功能代码、重构。
一是避免疏漏,也避免干扰当前进行的工作。
4)测试驱动。
这个比较核心。
完成某个功能,某个类,首先编写测试代码,考虑其如何使用、如何测试。
然后在对其进行设计、编码。
5)先写断言。
测试代码编写时,应该首先编写对功能代码的判断用的断言语句,然后编写相应的辅助语句。
6)可测试性。
功能代码设计、开发时应该具有较强的可测试性。
其实遵循比较好的设计原则的代码都具备较好的测试性。
比如比较高的内聚性,尽量依赖于接口等。
7)及时重构。
无论是功能代码还是测试代码,对结构不合理,重复的代码等情况,在测试通过后,及时进行重构。
LINUX启动过程
一.电脑启动时,BIOS装载MBR,然后从当前活动分区启动,LILO获得引导过程的控制权后,会显示LILO提示符。
此时如果用户不进行任何操作,LILO将在等待制定时间后自动引导默认的操作系统,而如果在此期间按下TAB键,则可以看到一个可引导的操作系统列表,选择相应的操作系统名称就能进入相应的操作系统。
二.当用户选择启动LINUX操作系统时,LILO就会根据事先设置好的信息从ROOT文件系统所在的分 区读取LINUX映象,然后装入内核映象并将控制权交给LINUX内核。
LINUX内核获得控制权后, 以如下步骤继续引导系统:
1.LINUX内核一般是压缩保存的,因此,它首先要进行自身的解压缩。
内核映象前面的一些代码完成解压缩。
2.如果系统中安装有可支持特殊文本模式的、且LINUX可识别的SVGA卡,LINUX会提示用户选择适当的文本显示模式。
但如果在内核的编译过程中预先设置了文本模式,则不会提示选择显示模式。
该显示模式可通过LILO或RDEV工具程序设置。
3.内核接下来检测其他的硬件设备,例如硬盘、软盘和网卡等,并对相应的设备驱动程序 进行配置。
这时,显示器上出现内核运行输出的一些硬件信息。
4.内核装载ROOT文件系统。
ROOT文件系统的位置可在编译内核时指定,也可通过LILO或RDEV指定。
文件系统的类型可自动检测。
如果由于某些原因装载失败,则内核启动失败,最终会终止系统。
LINUX目录结构
/bin这个目录存放着最经常使用的命令。
/boot这里存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件。
/dev目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的DLL文件。
几乎所有的应用程序都需要用到这些共享库。
/lost+found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/mnt在这里面中有四个目录,系统提供这些目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/cdrom上,然后进入该目录就可以查看光驱里的内容了。
/proc这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件。
/root该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin这里存放的是系统管理员使用的系统管理程序。
/tmp这个目录是用来存放一些临时文件的。
/usr/X11R6存放X-Windows的目录;
/usr/games存放着XteamLinux自带的小游戏;
/usr/bin存放着许多应用程序;
/usr/sbin存放root超级用户使用的管理程序;
/usr/docLinux技术文档;
/usr/include用来存放Linux下开发和编译应用程序所需要的头文件;
/usr/lib存放一些常用的动态链接共享库和静态档案库;
/usr/local这是提供给一般用户的/usr目录,在这里安装一般的应用软件;
/usr/man帮助文档所在的目录;
/usr/srcLinux开放的源代码,就存在这个目录,爱好者们别放过哦;
/var这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。
LINUX分区命名规则
1. Had表示第一个IDE的主盘,hdd表示第二个IDE的从盘
2. hdX1\2\3\4表示硬盘上的主分区(受硬盘分配表的大小限制最多4个),一种特殊的主分去叫做扩展分区,其中可以划分多个逻辑分区,从hdX5开始
1.man对你熟悉或不熟悉的命令提供帮助解释
eg:
manls就可以查看ls相关的用法
注:
按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行
2.ls查看目录或者文件的属*,列举出任一目录下面的文件
eg:
ls/usr/man
ls-l
a.d表示目录(directory),如果是一个"-"表示是文件,如果是l则表示是一个连接文件(link)
b.表示文件或者目录许可权限.分别用可读(r),可写(w),可运行(x).
3.cp拷贝文件
eg:
cpfilename1filename2//把filename1拷贝成filename2
cp1.cnetseek/2.c//将1.c拷到netseek目录下命名为2.c
4.rm删除文件和目录
eg:
rm1.c//将1.c这个文件删除
5.mv移走目录或者改文件名
eg:
mvfilename1filename2//将filename1改名为filename2
mvqib.tgz../qib.tgz//移到上一级目录
6.cd改变当前目录pwd查看当前所在目录完整路径
eg:
pwd//查看当前所在目录路径
cdnetseek//进入netseek这个目录
cd//退出当前目录
7.cat,more命令
将某个文件的内容显示出来.两个命令所不同的是:
cat把文件内容一直打印出来,而more则分屏显示
eg;cat>1.c//就可以把代码粘帖到1.c文件里,按ctrl+d保存代码。
cat1.c或more1.c//都可以查看里面的内容。
gcc-o11.c//将1.c编译成.exe文件,我们可以用此命编译出代码
8.chmod命令权限修改用法:
chmod一位8进制数filename
eg:
chmodu+xfilenmame//只想给自己运行,别人只能读
//u表示文件主人,g表示文件文件所在组.o表示其他人;r表可读,w表可写,x表可以运行
chmodg+xfilename//同组的人来执行
9.clear,date命令clear:
清屏,相当与DOS下的cls;date:
显示当前时间.
10.mount加载一个硬件设备
用法:
mount[参数]要加载的设备载入点
eg:
mount/dev/cdrom
cd/mnt/cdrom//进入光盘目录
11.su在不退出登陆的情况下,切换到另外一个人的身份
用法:
su-l用户名(如果用户名缺省,则切换到root状态)
eg:
su-lnetseek(切换到netseek这个用户,将提示输入密码)
12.whoami,whereis,which,id
//whoami:
确认自己身份.
//whereis:
查询命令所在目录以及帮助文档所在目录.
//which:
查询该命令所在目录(类似whereis)
//id:
打印出自己的UID以及GID.(UID:
用户身份唯一标识.GID:
用户组身份唯一标识.每一个用户只能有一个唯一的UID和GID.)
eg:
whoami//显示你自已登陆的用户名
whereisbin显示bin所在的目录,将显示为:
/usr/local/bin
whichbin
13.grep,findgrep:
文本内容搜索;find:
文件或者目录名以及权限属主等匹配搜索
eg:
grepsuccess* /*查找当前目录下面所有文件里面含有success字符的文件
14.kill可以杀死某个正在进行或者已经是dest状态的进程
eg;psax
15.passwd可以设置口令
16.history用户用过的命令
eg:
history//可以显示用户过去使用的命令
17.!
!
执行最近一次的命令
18.mkdir命令
eg:
mkdirnetseek//创建netseek这个目录
19.tar解压命令
eg:
tar-zxvfnmap-3.45.tgz//将这个解压到nmap-3.45这个目录里
20.finger可以让使用者查询一些其他使用者的资料
eg:
finger//查看所用用户的使用资料
fingerroot//查看root的资料
du,df
du命令可以显示目前的目录所占的磁盘空间,df命令可以显示目前磁盘剩余的磁盘空间。
如果du命令不加任何参数,那么返回的是整个磁盘的使用情况,如果后面加了目录的话,就是这个目录在磁盘上的使用情况(这个功能可是dos没有的呦)。
不过我一般不喜欢用du,因为它给出的信息是在是太多了,我看不过来,而df这个命令我是最常用的,因为磁盘上还剩多少空间对我来说是很重要的。
cat
这个命令是linux中非常重要的一个命令,它的功能是显示或连结一般的ascii文本文件。
cat是concatenate的简写,类似于dos下面的type命令。
它的用法如下:
cattext显示text这个文件;
catfile1file2依顺序显示file1,file2的内容;
catfile1file2>file3把file1,file2的内容结合起来,再“重定向(>)”到file3文件中。
“〉”是一个非常有趣的符号,是往右重定向的意思,就是把左边的结果当成是输入,然后输入到file3这个文件中。
这里要注意一点是file3是在重定向以前还未存在的文件,如果file3是已经存在的文件,那么它本身的内容被覆盖,而变成file1+file2的内容。
如果〉左边没有文件的名称,而右边有文件名,例如:
cat>file1:
结果是会“空出一行空白行”,等待你输入文字,输入完毕后再按[Ctrl]+[c]或[Ctrl]+[d],就会结束编辑,并产生file1这个文件,而file1的内容就是你刚刚输入的内容。
这个过程和dos里面的copyconfile1的结果是一样的。
另外,如果你使用如下的指令:
catfile1>>file2:
这将变成将file1的文件内容“附加”到file2的文件后面,而file2的内容依然存在,这种重定向符〉〉比〉常用,可以多多利用。
ln
这是linux中又一个非常重要命令,请大家一定要熟悉。
它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:
ln–s源文件目标文件。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
例如:
ln–s/bin/less/usr/local/bin/less
-s是代号(symbolic)的意思。
这里有两点要注意:
第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;第二,ln的链接又软链接和硬链接两种,软链接就是ln–s****,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln****,没有参数-s,它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls–l命令去察看,就可以看到显示的link的路径了。
1、介绍
Linux下的开发:
VIM、Emacs、GCC、Eclipse。
VIM、Emacs编辑器GCC编译器Eclipse集成编辑与编译于一体VIM和EMACS可以调用gcc进行编译。
ECLIPSE和KDevelop是IDE,就是编辑、编译、调试、运行基于一体。
底层也调用gcc(如果是C/C++)进行编译。
2、命令
在运行程序-输入bash-选择在终端里运行-单击运行
命令:
1.mkdir目录名:
建立目录
mkdir目录名/子目录名
2.rm目录名:
删除目录
rm-r目录名:
删除该目录和其下的所有子目录
3.ls:
查询当前目录下的所有文件
4.cd目录名:
进入该目录
学习Linux时,你可能会遇到多种问题,这里将给XXLinux基础用户一篇入门文章,在这里拿出来和大家分享一下。
如果你像我一样花些时间在Linux论坛上,那你就会像我一样因为有太多这样的帖子而恼怒:
“嗨!
我用了几天Linux,总体还行。
但某某功能不能像Windows那样,真糟糕。
为什么开发人员不能重写一下让它更像Windows一点?
我相信这样做的话Linux基础用户会更多!
”
你也许尝试过回应这些问题,结果那个Linux新手却和你吵得面红耳赤,他根据自己几年来在另外一个操作系统上和区区几小时在Linux上的经验,得出结论:
他的想法是无比睿智的,而你不同意他的观点是因为你是一个从“古董学校”出来的Linux用户,认为GUI是恶魔的产物,所有人都应该强迫去用CLI(译者:
命令行界面)。
本文的目的就是向这样的新手解释为什么他们的观点会引发争论而不是受到欢迎。
首先就是这个最常被提起的论断:
“如果Linux能这样,那就会有更多的人从Windows转过来!
”
这样,让我先解释一下为理解Linux所需的基本常识:
Linux社区不会试图去为一般的Windows用户提供一个替代的操作系统。
Linux的目标不是“每台机器都装Linux”。
千真万确,真的不是。
.的确,它们都是操作系统,的确,它们都能做相同的事情,但是这让Linux成为一种选择,而不是替代品。
这看上去也许算不上什么区别,但实际上却是最最重要的一点。
linux<=>windows就如同摩托车<=>小汽车:
都是车,能通过公路吧你从甲地送到乙地,但它们有不同的形状、不同的尺寸、不同的操作装置,其基本工作方式也不同。
它们是不可以随意互换的。
它们有不同的用途、不同的长处和短处,你要挑选一种适合自己的,而不要指望一种可以完全替代另一种。
一个开车的人遇到塞车时,看到摩托车自如在车堆中来回穿梭,他也许会羡慕摩托车所具备的这种能力。
如果这个司机接着又说:
“我对汽车了如指掌,所以我也一定同样了解摩托车!
”,那么他就错了。
◆如果那个司机买了一辆摩托,然后发现很难适应用手旋转握把来控制加速,而不是脚踏板,他可能会报怨摩托也应该装油门踏板。
◆如果那个司机有一个老婆两个孩子,他也许觉得摩托车只能载一个乘客是个缺点。
他会建议重新设计摩托车,使其可以两两肩并肩的坐四个人。
◆如果那个司机想骑摩托车,却发现无法控制平衡,总是摔倒,他也许会建议让摩托车也安上四个轮子。
◆如果这个司机发现转弯时自己身体总会倾斜,那他会建议在摩托上装稳定器使其可以在转弯时总保持正直。
◆如果这个司机怕摩托车被偷,他也许会报怨摩托没有门,让小偷容易得手。
◆如果这个司机觉得头盔碍事,他也许会建议在手把上装一个安全气囊以替代烦人的头盔。
这些情况下他都错了,因为他想用摩托车替代汽车,他想让摩托做所有汽车能做的,他以为摩托的工作方式与汽车相同,比汽车缺少的功能只要嫁接上就行了。
同样,一些好心的Linux基础用户也建议把Linux变成他们所熟悉的样子,结果也因为相同的原因没有任何所获。
也许Linux和Windows都可以被用于完成相同的任务,但汽车和摩托也是。
这并不意味这你可以直接从一个换到另外一个,也不意味着它们的特性可以相互替换。
太多的人以为从Windows转移到Linux就如同宝马换奔驰一样,认为其控制方式应该相同,他们的经验直接可以派上用场,而两者之间所有的差别也仅仅是表层的。
他们想:
“在公路上行驶时,我需要汽车,在使用电脑时,我需要操作系统。
汽车的工作方式都相同,因此操作系统的工作方式也应该都相同。
”但这并不准确。
“在公路上行驶时,我需要车,在使用电脑时,我需要操作系统。
我知道如何开汽车,但我不懂摩托车。
我知道如何使用Windows,但我不懂linux。
”----这才是准确的。
Windows用户必须意识到他只是一个有经验的windows用户,而不是有经验的电脑用户,就像汽车司机仅仅是汽车司机,而不是所有种类车辆的司机。
Windows用户必须意识到当他在尝试Linux时,他又成为了一个新手,就像汽车司机去尝试开摩托。
Windows必须要愿意去学习完成相同任务所需的不相同的手段,就像汽车司机必须要去适应替代方向盘的手把和他从没戴过的头盔。
并且他们要作好心理准备:
这些“不同”并不意味着“劣等”。
这个简单的事实给有基础的Windows用户造成了更大的麻烦。
他们来用Linux时带着根深蒂固的Windows操作习惯和一种态度:
“谢谢,我知道怎么用电脑!
”问题是,他们并不知道,他们只知道怎么用Windows。
当面对另一种操作系统时,这些高级用户可能会遇到最糟的问题:
他们有太多的经验需要遗忘掉。
当一个新手说“我不知道”,接着就开始在论坛上探索、提问时,一个Windows高级用户可能会说:
“我知道怎么做,我就这么、这么、这么做,然后……居然不行!
愚蠢的系统!
”接着他们又说:
“如果我这么有知识的都搞不定,那新手就更不要想了,Linux离桌面应用还有十万八千里呢!
”他们恐怕没有意识到他们的知识帮了倒忙,使他们比经验少的用户遇到更多的问题。
他们错误的以为Linux是一种可以和Windows做相同事情的软件,而事实上是它是一种不同于Windows的软件,做的事也不同。
不是Linux做与Windows相同的任务做得不好,而是它很好的完成了一个替代的任务。
Linux是一种可供选择的操作系统,而不是Windows的替代品。
它也永远不会取代Windows,因为它们有完全不相容的目标。
微软的目标是让他们的软件装到更多的电脑中,赚更多钞票。
而Linux不是这样,它是免费的,它的着眼点不同。
要理解这一点就要先理解FOSS。
并不奇怪很多Linux基础用户现在还不能很好的理解它,他们是新手嘛,他们还是习惯于从私有软件的角度思考。
所以让我解释一下:
典型的FOSS软件的作者往往因为对现存软件的不满,于是想到自己来写一个。
而他又是个大好人,他把软件源码公之于众之后对大家说:
“你们自己折腾吧!
”。
他可以这样做,因为复制软件没有任何成本,所以把软件贡献给世界也不会比自己留着用多花一分钱。
他不会因为把软件送人而感到痛苦。
然而,很重要的一点需要记住的是:
他也不会因为送出软件而获利。
不论是一人用还是一亿人用,对开发者来说毫无区别。
哦,当然,他一定乐意看到自己的产品广受欢迎:
用户数是个自我吹嘘的好题材,还能创造记录。
但这不会为他带来任何金钱:
因为这是FOSS。
如果这个软件有所成功,别人就会对此感兴趣,也愿意帮助改善它。
这是FOSS最大的优势:
每一个用户都可能是潜在的开发者,每一个人都能参与使软件工作得更好,功能更多,bug更少。
如果一个软件能吸引到一大帮开发者那将是非常好的事情。
但这仅是对软件本身而言的,它会使软件变得更好,而开发者不会因此致富,只会让他们为此投入更多的时间。
startx 从字符界面Console进入图形界面X-Window Ctrl+Alt+BackSpace回到字符界面
init[0123456]
在X-Window图形操作界面中按“Alt+Ctrl+功能键Fnn=1~6
0:
停机(记住不要把initdefault设置为0,因为这样会使Linux无法启动)
1:
单用户模式,就像Win9X下的安全模式