2023年6月20日发(作者:)

程序员面试技术问题复习大纲

Final approval draft on November 22, 2020 一、选择题(每题2分,共30分)

1、在C语言中,若函数调用时实参是数组名,则传递给对应形参的是( A )。

A)数组空间的首地址 B)数组的第一个元素值

C)数组中元素的个数 D)数组中所有的元素

2、堆栈操作中( D )保持不变。

A)堆栈的顶 B)堆栈中的数据 C)堆栈指针

D)堆栈的底

3、数据结构主要研究数据的( D )。

A)逻辑结构

B)存储结构

C)逻辑结构和存储结构

D)逻辑结构和存储结构及其运算的实现

4、用二分法查找一个长度为10的、排好序的线性表,查找不成功时,最多需要比较

( C )次

A)5 B)2 C)4

D)1

5、学生关系模式为S(Sno,Sname,SD,Sage),其中:Sno表示学生学号,Sname表示学生姓名,SD表示学生所在系,Sage表示学生年龄。试将下面的SQL语句空缺部分补充完整,使其可以查询计算机系学生的学号、姓名和年龄。

SELECT Sno, Sname, Sage

FROM S

WHERE( B )

A)SD=计算机

B)SD=‘计算机’

C)‘SD’=计算机

D)‘SD=计算机’

6、如果一个二叉树的前序序列是A、B、C,后序序列是C、B、A,则该二叉树节点的中序序列是( D )

A)必为A、B、C B)必为A、C、B

C)别为B、C、A D)不能确定

7、关于模块设计的原则,以下叙述中正确的是( B )。

A)模块的内聚性高,模块之间的耦合度高

B)模块的内聚性高,模块之间的耦合度低

C)模块的内聚性低,模块之间的耦合度高

D)模块的内聚性低,模块之间的耦合度低

8、TCP/IP是一个协议簇,它的体系结构分为四层:应用层、网际层、网络接口层和

( B )。

A)会话层 B)传输层 C)网络层

D)表示层 9、以下哪一个不是栈的基本运算( B )

A)删除栈顶元素 B)删除栈底元素

C)判断栈是否为空 D)将栈置为空

10、深的为5的二叉树,至多有( C )个节点。

A)5 B)10 C)31

D)32

11、软件工程中,对于程序的测试方法有两类,分别是黑盒测试和白盒测试。那么,在软件开发过程中的功能测试和单元测试分别是属于他们中( A )

A)黑盒测试,白盒测试 B)都是黑盒测试

C)都是白盒测试 D)白盒测试,黑盒测试

12、下面当中关于软件的开发品质描述不正确的是( A )

A)软件的开发规模越大,那预计生产的bug数就越高

B)要想摘除软件的bug,只能依靠各种测试和用户现场使用

C)在软件开发的过程中,我们应该尽可能的在开发阶段摘除尽可能多的bug

D)软件的品质和开发进度一样同等重要

13、一般地,可以将软件开发的生命周期划分为软件项目计划、( C )、软件设计、编码、测试和运行/维护6个阶段。

A)可行性分析

B)初始调查

C)需求分析与定义

D)问题分析

14、开源被非赢利软件组织(美国的Open Source Initiative协会)注册为认证标记,并对其进行了正式的定义,用于描述那些源码可以被公众使用的软件,并且此软件的使用,修改和发行也不受许可证的限制。下面( B )是开源软件

A)unix B)linux C)windows office D)金山词霸

15、计算机必须要把高级编程语言翻译成机器语言,计算机才能执行高级语言编写的程序。这个翻译的方式分为两种,一个是编译,一个是解释,那么下面( BD )不是解释性语言(选择两项)

A)javascript B)java C)perl D)c

二、简答题(每题10分,共60分)

1、简述Overload和Override的区别

Overload:方法重载,同一类中,方法名相同,形参列表不同

Override:方法覆盖,子类和父类之间,方法名、形参、返回类型形同,子类方法访问权限不小于父类,子类不能抛新异常。

2、Java的接口和C++的虚类的相同和不同处

他们都可以只有方法的定义,而不实现方法。

Java的接口:java中接口的出现,主要是为了弥补的java单继承的缺陷。接口中的方法只能是抽象方法,变量只能是静态常量,接口不是类是对类的要求,是一组功能的定义,是类在广度上的扩展。

C++中的虚类:必须有至少一个纯虚函数,是一个类,更类似于java中的抽象类,是类在深度上的扩展。

3、JAVA SERVLET API中forward() 与redirect()的区别 Forward:转发,直接在服务器端转发,不经过客户端浏览器,两个页面共享同一个request和response。

Redirect:重定向,经过客户端浏览器发送第二次请求,两个页面的request和response不是同一个,通常用于服务器迁移

4、说说Servlet和CGI的区别

Servlet:处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁。

CGI:对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

5、说说数据库连接池的工作机制是什么

在服务器启动的时候,预先产生一批数据库连接,存放到连接池中,在需要的时候从中取一个用,使用完后再放回去。如果空闲连接不够,会自动增加连接;反之,如果空闲连接太多,会自动关闭部分连接。这样可以提高程序的运行效率,减少服务器开销。

6、写出下列常用IT缩写的英文全称及中文翻译(每个2分)

①DAO:Data Access Object,数据访问对象

②ODBC:Open DataBase Connectivity,开放数据库连接

③UML:Unified Modeling Language,统一建模语言

④HTTP:HyperText Transfer Protocol,超文本传输协议

⑤GUI:Graphical User Interface,图形用户界面

三、编程题(10分)

1、用你所熟悉的编程语言写一段冒泡排序的程序

自己找,C语言书上肯定有

main()

{

int i,j,temp;

int a[10];

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

scanf ("%d,",&a[i]);

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

{ for (i=0;i<10-j;i++)

if (a[i]>a[i+1])

{ temp=a[i];

a[i]=a[i+1];

a[i+1]=temp;}

}

for(i=1;i<11;i++)

printf("%5d,",a[i] );

printf("n");

}

2023年6月20日发(作者:)

程序员面试技术问题复习大纲

Final approval draft on November 22, 2020 一、选择题(每题2分,共30分)

1、在C语言中,若函数调用时实参是数组名,则传递给对应形参的是( A )。

A)数组空间的首地址 B)数组的第一个元素值

C)数组中元素的个数 D)数组中所有的元素

2、堆栈操作中( D )保持不变。

A)堆栈的顶 B)堆栈中的数据 C)堆栈指针

D)堆栈的底

3、数据结构主要研究数据的( D )。

A)逻辑结构

B)存储结构

C)逻辑结构和存储结构

D)逻辑结构和存储结构及其运算的实现

4、用二分法查找一个长度为10的、排好序的线性表,查找不成功时,最多需要比较

( C )次

A)5 B)2 C)4

D)1

5、学生关系模式为S(Sno,Sname,SD,Sage),其中:Sno表示学生学号,Sname表示学生姓名,SD表示学生所在系,Sage表示学生年龄。试将下面的SQL语句空缺部分补充完整,使其可以查询计算机系学生的学号、姓名和年龄。

SELECT Sno, Sname, Sage

FROM S

WHERE( B )

A)SD=计算机

B)SD=‘计算机’

C)‘SD’=计算机

D)‘SD=计算机’

6、如果一个二叉树的前序序列是A、B、C,后序序列是C、B、A,则该二叉树节点的中序序列是( D )

A)必为A、B、C B)必为A、C、B

C)别为B、C、A D)不能确定

7、关于模块设计的原则,以下叙述中正确的是( B )。

A)模块的内聚性高,模块之间的耦合度高

B)模块的内聚性高,模块之间的耦合度低

C)模块的内聚性低,模块之间的耦合度高

D)模块的内聚性低,模块之间的耦合度低

8、TCP/IP是一个协议簇,它的体系结构分为四层:应用层、网际层、网络接口层和

( B )。

A)会话层 B)传输层 C)网络层

D)表示层 9、以下哪一个不是栈的基本运算( B )

A)删除栈顶元素 B)删除栈底元素

C)判断栈是否为空 D)将栈置为空

10、深的为5的二叉树,至多有( C )个节点。

A)5 B)10 C)31

D)32

11、软件工程中,对于程序的测试方法有两类,分别是黑盒测试和白盒测试。那么,在软件开发过程中的功能测试和单元测试分别是属于他们中( A )

A)黑盒测试,白盒测试 B)都是黑盒测试

C)都是白盒测试 D)白盒测试,黑盒测试

12、下面当中关于软件的开发品质描述不正确的是( A )

A)软件的开发规模越大,那预计生产的bug数就越高

B)要想摘除软件的bug,只能依靠各种测试和用户现场使用

C)在软件开发的过程中,我们应该尽可能的在开发阶段摘除尽可能多的bug

D)软件的品质和开发进度一样同等重要

13、一般地,可以将软件开发的生命周期划分为软件项目计划、( C )、软件设计、编码、测试和运行/维护6个阶段。

A)可行性分析

B)初始调查

C)需求分析与定义

D)问题分析

14、开源被非赢利软件组织(美国的Open Source Initiative协会)注册为认证标记,并对其进行了正式的定义,用于描述那些源码可以被公众使用的软件,并且此软件的使用,修改和发行也不受许可证的限制。下面( B )是开源软件

A)unix B)linux C)windows office D)金山词霸

15、计算机必须要把高级编程语言翻译成机器语言,计算机才能执行高级语言编写的程序。这个翻译的方式分为两种,一个是编译,一个是解释,那么下面( BD )不是解释性语言(选择两项)

A)javascript B)java C)perl D)c

二、简答题(每题10分,共60分)

1、简述Overload和Override的区别

Overload:方法重载,同一类中,方法名相同,形参列表不同

Override:方法覆盖,子类和父类之间,方法名、形参、返回类型形同,子类方法访问权限不小于父类,子类不能抛新异常。

2、Java的接口和C++的虚类的相同和不同处

他们都可以只有方法的定义,而不实现方法。

Java的接口:java中接口的出现,主要是为了弥补的java单继承的缺陷。接口中的方法只能是抽象方法,变量只能是静态常量,接口不是类是对类的要求,是一组功能的定义,是类在广度上的扩展。

C++中的虚类:必须有至少一个纯虚函数,是一个类,更类似于java中的抽象类,是类在深度上的扩展。

3、JAVA SERVLET API中forward() 与redirect()的区别 Forward:转发,直接在服务器端转发,不经过客户端浏览器,两个页面共享同一个request和response。

Redirect:重定向,经过客户端浏览器发送第二次请求,两个页面的request和response不是同一个,通常用于服务器迁移

4、说说Servlet和CGI的区别

Servlet:处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁。

CGI:对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

5、说说数据库连接池的工作机制是什么

在服务器启动的时候,预先产生一批数据库连接,存放到连接池中,在需要的时候从中取一个用,使用完后再放回去。如果空闲连接不够,会自动增加连接;反之,如果空闲连接太多,会自动关闭部分连接。这样可以提高程序的运行效率,减少服务器开销。

6、写出下列常用IT缩写的英文全称及中文翻译(每个2分)

①DAO:Data Access Object,数据访问对象

②ODBC:Open DataBase Connectivity,开放数据库连接

③UML:Unified Modeling Language,统一建模语言

④HTTP:HyperText Transfer Protocol,超文本传输协议

⑤GUI:Graphical User Interface,图形用户界面

三、编程题(10分)

1、用你所熟悉的编程语言写一段冒泡排序的程序

自己找,C语言书上肯定有

main()

{

int i,j,temp;

int a[10];

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

scanf ("%d,",&a[i]);

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

{ for (i=0;i<10-j;i++)

if (a[i]>a[i+1])

{ temp=a[i];

a[i]=a[i+1];

a[i+1]=temp;}

}

for(i=1;i<11;i++)

printf("%5d,",a[i] );

printf("n");

}