当前位置:文档之家› 软件类笔试试题

软件类笔试试题

什么是编译?编译器是将一种语言翻译为另一种语言的计算机程序。

编译器将源程序(source language)编写的程序作为输入,而产生用目标语言(target language )编写的等价程序。

通常地,源程序为高级语言(high-level language ),如C或C + + ,而目标语言则是目标机器的目标代码(object code,有时也称作机器代码(machine code )),也就是写在计算机机器指令中的用于运行的代码。

这一过程可以表示为:源程序→编译器→目标程序什么是java?Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems 公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。

Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

什么是c语言C语言是一种计算机程序设计语言。

它既具有高级语言的特点,又具有汇编语言的特点。

它由美国贝尔研究所的D.M.Ritchie于1972年推出。

1978后,C语言已先后被移植到大、中、小及微型机上。

它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。

具体应用比如单片机以及嵌入式系统开发。

什么是c++语言l l 对于要解决实际问题的程序员而言,C++使程序设计变得更有乐趣;l l C++是一门通用目的的程序设计语言,它:——是一个更好的C;——支持数据抽象;——支持面向对象程序设计;——支持范型程序设计。

对范型程序设计的支持在C++设计的后期才被作为一个明确、独立的目标来实现。

而在C++演化过程的大部分时间里,我一直把范型程序设计以及支持它的语言特性划归在“数据抽象”的大标题之下。

OSI七层模型TCP/IP五层模型IP协议的定义在哪个层面上有什么作用TCP与UDP呢交换机和路由器的实现原理是什么?分别在哪个层次上面实现的?C++的类和C里面的struct有什么区别?析构函数和虚函数的用法和作用全局变量和局部变量有什么区别?是怎么实现的?操作系统和变异其实怎么怎么知道的?8086是多少位的系统?在数据总线上是怎么实现的?1。

将一个N进制数转换成M进制数2。

找出32位数中是回文数,且其开方为整数的数3。

将某个文件从一个目录拷贝到另一个目录下(不能用C/C++中的函数或类)OpenReadCreateWriteClose还有一个C++的改错题,差不多100行的样子3个WIN32的汇编题,不知所云两个小时完成编程题要求提供代码和编程思路,时间优化策略感觉好难原文标题: 今天完全被金山鄙视了考的都是什么软件设计题啊难的无从下手!1.改错考的是c++2.32位回文数开根号为整数的打出来3.n进制数转m进制数(1<m,n<=16)4.将文件从一个目录拷到另外一个目录5.找出一个文件中的特定单词,并打印包含该词的行剩下的貌似是汇编何况我投的金山职位描述上都只要求了解一种编程语言郁闷啊现简要介绍一下笔试题目,我应聘的是词霸的研发工程师。

词霸的笔试题目对编程要求比较高。

第一题是一段英文阅读题,主要内容是关于COM的,后面有三道判断题,题目也是英文的,我想应该是考察应聘者的专业英文水平。

我英文不是太好,虽然基本每句话能大概了解意思,题目仍然做不出。

我想应该在大学学习中学习一些课外的知识会比较好,不要求会用,只要能了解其大概,基本工作原理,特性什么的就行,这题应该就很容易答出来。

第二题~第四题是算法编程题,应该是考察应聘者的基本专业素质第二题的内容是:输入自然数n,打印1~n的所有质数。

写出算法思路、函数实现、如何优化时间复杂度。

个人感觉这道题是比较简单的。

最为比较常见的算法,应该掌握。

第三题的内容是:高精度乘法,输入不大于256位的正整数,计算其结果,并显示计算过程(乘法竖式),写出算法思路、函数实现比如11×11=121,应显示为:× 11——————1111——————121这道题跟我以前的数据结构实验的一道题类似,当时要求使用链表,我没有选这道题,所以见到这道题我不太会做,只写了一下算法思路。

数组乘法int a[N];int b[N];int c[2 * N];void mutiply(){for (int i=0; i<N; ++i) {int carry = 0;for (int j=0; j<N; ++j) {carry += a[i]*b[j]+c[i+j];c[i+j]=carry%10;carry/=10;}}}第四题是:已存在一组数据,若数据个数小于两个则程序结束,若不是,则选择一个中间点,将数据分成两组,比中间点小的放在一组,其余的放在一组。

并对并对两组数据排序。

这道题应该是测试评聘者的基本素质,对经典排序算法的掌握程度。

我对这些算法却仅仅是了解,建议大家一点要练到熟练写出的程度,可以节省很多时间。

第五题是VC++改错题,由于前边时间耽误的太多,没时间做了。

应该考察的是应聘者对C++语言的语法熟悉程度。

你看的文章来自:中国IT先锋网[url][/url]第六题是操作系统的题目,是关于死锁的。

不知做得对不对,但感觉上不是很难。

第七题是汇编题,本题有两道题,后一题是选做题。

前一题好象是说子程序的调用又要有汇编语句的支持,不同的编译器、操作系统等都有不同的隐式约定,简述你了解的一种。

我对汇编不熟,而且学校学的是16位汇编,且好像没叫过题目说的东西,所以此题放弃。

后一题是现有一段英文简述64位汇编,之后问64汇编按英文简述的那样有什么优势?然后是写一段什么东西。

此题还是放弃。

通过这次笔试,我被鄙视了。

谁让咱自己确实实力不行呢。

这次笔是让我知道,大学学习还是应该注意基本素质的培养和练习,应该多写代码,使自己不手生,还有就是熟练掌握各种基本算法。

课余了解一下工作中常用的技术。

这样至少可以答出1~6题。

看了一下表,十点三刻了,我的两个同去金山的同学也已接到面试电话,我已经确定被淘汰。

看来仍要为生存而继续奔波,从小的梦想也就此破灭。

金山公司笔试本以为所有软件公司的笔试题都跟HP招实习生一样考的都是那些基础的概念,可是在金山工作人员发下考卷的那一刻才知道,我们都猜想错了,可能因为员工和实习生是两个不同的概念,所以各自的要求也不一样,实习生是要求基础好,一培训就能马上做项目,而员工就不同了,要有一定的编程能力才能算过关。

今天笔试一共考了5题,不象HP的出了n多,呵呵~~~题少但做起来并不轻松,两道编程题、一道改错题、一道给出程序写结果题,最后还有一道自由论述,关于最近做的或者即将做的程序的描述,下面将逐一介绍。

编程题:给出功能描述,自己写代码实现。

其中一道是输出自然数n的约数,另一道是快速排序(当然题目不是那么描述的,而且可以有多种解答方法,但用快速排序本人认为是最好);改错题:是考WIN32的,找出程序中的错误之处,偶找了半天才找了4处,还不晓得对否。

改错题就是这样,程序意思都看明白,就是不晓得哪里错,一看都对,呵呵~~~程序结果输出题:主要是考继承,比如如何初始化子类,另外还有虚函数的继承问题,子类的一个对象到底是如何在调用虚函数等;至于自由论述大家就可自由发挥了,把自己知道的一点信息发出来,供需要的朋友参考!1:写一个程序求出小于任意自然数的所有素数2:写一个程序做低于256位整数的运算,并有如下输出:比如输入: 12,23 [url][/url]输出:12*23------3624------2763:写一程序实现任意n进制数的互相转换1<n<=16qD4:一个程序改错题,好象是一个简单的加密的程序下面还有几道任选题目其中包括一个利用tcp文件传输的程序,还有一个利用udp文件传输的程序,以及一个显示内存使用情况并画出折线图的程序,一个在窗口显示一个位图的程序,还有一个显示剪贴板内容堆与栈的区别(生命周期和用法)1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。

其操作方式类似于数据结构中的栈。

2、堆区(heap)—由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。

注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。

程序结束后由系统释放。

4、文字常量区—常量字符串就是放在这里的,程序结束后由系统释放。

5、程序代码区—存放函数体的二进制代码。

栈区的内容生命周期是该声明到的函数结束时。

自动释放该内容。

堆则是需要程序员手动释放,该内容生命期才结束。

V ector的内存管理策略我所使用的编译器使用双倍内存的管理策略。

由于每次重新分配内存,都要经过四步操作:1.预分配足够的新内存;2.将原有元素拷贝到新内存;3.将新元素添加到新内存;4.删除原有内存。

而这四步都是比较消耗内存的操作,因此,建议根据vector的使用情况,尽量用reserve()提前分配内存,尤其是当vector的size比较小时,效率提升明显。

智能指针智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。

智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。

每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;调用析构函数时,析构函数减少引用计数(如果引用计数减至0,则删除基础对象)。

实现引用计数有两种经典策略:一是引入辅助类,二是使用句柄类。

下面分别介绍这些内容程序代码程序代码class V alue{public:V alue(int nV al) {m_nV al=nV al;printf("Call V alue::V alue(int nV alue)\n");}~V alue() {printf("Call V alue::~V alue()\n");}V alue& operator=(int nV al){m_nV al=nV al;printf("Call V alue::operator=\n");return *this;void Dump() {printf("V alue::m_nV al=%d\n",m_nV al);}protected:int m_nV al;};class Base{public: Base() {Init();}virtual ~Base() {Release();}virtual void Init() {printf("Call Base::Init()\n");}virtual void Release() {printf("Call Base::Release()\n");}virtual void Dump() {printf("Call Base::Dump()\n");}};class Derive:public Base{public:Derive() {printf("Call Derive::Derive()\n");}~Derive() {printf("Call Derive::~Derive()\n");}virtual void Init() {m_V al=2;printf("Call Derive::Init()\n");}virtual void Release() {printf("Call Derive::Release()\n");}virtual void Dump() {m_V al.Dump();}protected:static V alue m_V al;};V alue Derive::m_V al=0;void DestroyObj(Base* pOb){pOb->Dump();delete pOb;}void main(){Derive *pOb=new Derive;DestroyObj(pOb);}写出输出结果Call V alue::V alue(int nV alue)//staticCall Base::Init()Call Derive::Derive()V alue::m_nV al=0Call Derive::~Derive()Call Base::Release()Call V alue::~V alue()//static你看的文章来自:中国IT先锋网[url][/url]设计一函数,求整数区间[a,b]和[c,d]的交集二题:程序代码程序代码/////////////////////////////////////////#define BOOL int#define TRUE 1#define FALSE 0BOOL jiba(int *p1, int *p2, int**pt){if ((p1 == NULL) || (p2 == NULL) || (p1[0] > p1[1]) || (p2[0] > p2[1])) {printf("输入有误\n");return FALSE;}if (p2[0] <= p1[0]){if (p2[1] < p1[0])return FALSE;else{*pt = new int[2];(*pt)[0] = p1[0];(*pt)[1] = (p2[1]<=p1[1] ? p2[1]:p1[1]);return TRUE;}}else{if (p2[0] > p1[1])return FALSE;else{*pt = new int[2];(*pt)[0] = (p1[0] >= p2[0] ? p1[0]:p2[0]);(*pt)[1] = p1[1];return TRUE;}}return TRUE;}//test!int rt[2] ={1,5};int rt1[2]={3,9};int main(){int *p = NULL;BOOL b = jiba(rt,rt1,&p);if (b){printf("[%d,%d]与[%d,%d]的交集为[%d,%d]\n",rt[0],rt[1],rt1[0],rt1[1], p[0],p[1]); delete p;}else{printf("[%d,%d]与[%d,%d]的交集为空\n",rt[0],rt[1],rt1[0],rt1[1]);}getchar();return 0;}l 要大致了解面试的公司,至少你要能说出该公司的一些优点l 总结自己的缺点和优点,跳槽的话,还要总结你现在公司的缺点和优点l 要知道你想要的是什么,对方公司是否真的适合你。

相关主题