2023年java编程笔试题 java程序员笔试题(五篇)

格式:DOC 上传日期:2023-04-14 22:03:05
2023年java编程笔试题 java程序员笔试题(五篇)
时间:2023-04-14 22:03:05     小编:zdfb

在日常学习、工作或生活中,大家总少不了接触作文或者范文吧,通过文章可以把我们那些零零散散的思想,聚集在一块。范文怎么写才能发挥它最大的作用呢?接下来小编就给大家介绍一下优秀的范文该怎么写,我们一起来看一看吧。

java编程笔试题 java程序员笔试题篇一

计算器

班级:****** 姓名:******

学号: ******* 指导老师:******

实验名称:java计算器

1实验目的: java编程语言在编程方面的具体应用,以及使用面向对象方法,对小应用程序进行需求分

析、概要设计、详细设计,最后使用java编程实现的全过程。

2实验意义:

在编程我们使用的java语言,是目前比较流行的编程语言。在当今这个时代,java语言在编程方面的优势使得编程有了更好的选择。java语言最大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。实训性质

本课程是计算机信息管理专业的一门实践性课程,是《java编程》课程的实践性教学环节。实训目标

⑴综合应用java程序设计的知识解决实际问题。

⑵学会在应用程序的设计过程中,应用面向对象的程序设计方法。⑶学会应用jdbc创建数据库应用程序。

⑷学会开发基于swing的应用程序及多文档应用程序的设计。实训任务

用java语言开发工具(例如jdk、jcreator、netbeans等)制作一个简单的可运行的完整的应用程序或小型系统,并编制出各阶段必要的文档。

将创建一个计算器,可以进行常用的加减乘除算术运算。本实例的知识点有:窗口布局器gridlayout的应用,对按钮消息的监听和响应。

6实训条件

<软件:>windows xp,netbeans ide 6.52 7开发背景: java是由sun microsystems公司于1995年5月推出的java程序设计语言(以下简称java语言)和java平台的总称。java语言是一个支持网络计算的面向对象程序设计语言。java语言吸收了smalltalk语言和c++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。

8系统部分分析:

1)java语言是简单的。java语言的语法与c语言和c++语言很接近,使得大多数程序员很容易学习和使用java。另一方面,java丢弃了c++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。

2)java语言是一个面向对象的。java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。java语言全面支持动态绑定,而c++ 语言只对虚函数使用动态绑定

3)java语言是分布式的。java语言支持internet应用的开发,在基本的java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括url、urlconnection、socket、serversocket等。java的rmi(远程方法激活)机制也是开发分布式应用的重要手段。

4)java语言是健壮的。java的强类型机制、异常处理、废料的自动收集等是java程序健壮性的重要保证。对指针的丢弃是java的明智选择。java的安全检查机制使得java更具健壮性。

5)java语言是安全的。java通常被用在网络环境中,为此,java提供了一个安全机制以防恶意代码的攻击。除了java语言具有的许多安全特性以外,java对通过网络下载的类具有一个安全防范机制(类classloader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制.6)java语言是体系结构中立的。java程序(后缀为java的文件)在java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个java平台的任何系统中运行。

7)java语言是可移植的。这种可移植性来源于体系结构中立性,另外,java还严格规定了各个基本数据类型的长度。java系统本身也具有很强的可移植性,java编译器是用java实现的.8)java语言是解释型的。如前所述,java程序在java平台上被编译为字节码格式,然后可以在实现这个java平台的任何系统中运行。

9)java是高性能的。与那些解释型的高级脚本语言相比,java的确是高性能的。事实上,java的运行速度随着jit(just-in-time)编译器技术的发展越来越接近于c++。

10)java语言是多线程的。在java语言中,线程是一种特殊的对象,它必须由thread类或其子(孙)类来创建。

11)java语言是动态的。java语言的设计目标之一是适应于动态变化的环境。

目录

课程设计题目 ……………………………… p1

课程设计简介 ……………………………… p2

课程设计源代码…………………………… p5

课程设计运行结果 ……………………… p15 课程设计心得体会 ………………………

p16

package computerpad;import .*;import .event.*;import .*;import .*;import list;import format;public class computerpad extends frame implements actionlistener {

numberbutton numberbutton[];

operationbutton oprationbutton[];

button 小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮;

panel panel;

jtextfield resultshow;

string 运算符号[]={“+”,“-”,“*”,“/”};

linkedlist 链表;

boolean 是否按下等号=false;

public computerpad()

{

super(“计算器”);

链表=new linkedlist();

numberbutton=new numberbutton[10];

for(int i=0;i<=9;i++)

{

numberbutton[i]=new numberbutton(i);

numberbutton[i].addactionlistener(this);

}

oprationbutton=new operationbutton[4];

for(int i=0;i<4;i++)

{

oprationbutton[i]=new operationbutton(运算符号[i]);

oprationbutton[i].addactionlistener(this);

}

小数点按钮=new button(“.”);

正负号按钮

=new button(“+/-”);

等号按钮=new button(“=”);

求倒数按钮=new button(“1/x”);

退格按钮=new button(“退格”);

清零按钮=new button(“c”);

eground();

eground();

eground();

eground();

eground();

eground();

ionlistener(this);

ionlistener(this);

ionlistener(this);

ionlistener(this);

ionlistener(this);

ionlistener(this);

resultshow=new jtextfield(10);

izontalalignment();

eground();

t(new font(“timesroman”,,14));

der(new softbevelborder(d));

kground();

table(false);

panel=new panel();

out(new gridlayout(4,5));

(numberbutton[1]);

(numberbutton[2]);

(numberbutton[3]);

(oprationbutton[0]);

(清零按钮);

(numberbutton[4]);

(numberbutton[5]);

(numberbutton[6]);

(oprationbutton[1]);

(退格按钮);

(numberbutton[7]);

(numberbutton[8]);

(numberbutton[9]);

(oprationbutton[2]);

(求倒数按钮);

(numberbutton[0]);

(正负号按钮);

(小数点按钮);

(oprationbutton[3]);

(等号按钮);

add(panel,);

add(resultshow,);

addwindowlistener(new windowadapter()

{ public void windowclosing(windowevent e)

{

(0);

}

});

setvisible(true);

setbounds(100,50,240,180);

setresizable(false);

validate();

} public void actionperformed(actionevent e)

{

if(rce()instanceof numberbutton)

{

numberbutton b=(numberbutton)rce();

if(()==0)

{

int number=ber();

(“"+number);

t(”“+number);

是否按下等号=false;

}

else if(()==1&&是否按下等号==false)

{

int number=ber();

string num=(string)first();

string s=(”“+number);

(0,s);

t(s);

}

else if(()==1&&是否按下等号==true)

{

int number=ber();

first();

(”“+number);

是否按下等号=false;

t(”“+number);

}

else if(()==2)

{

int number=ber();

(”“+number);

t(”“+number);

}

else if(()==3)

{

int number=ber();

string num=(string)t();

string s=(”“+number);

(2,s);

t(s);

}

}

else if(rce()instanceof operationbutton)

{

operationbutton b=(operationbutton)rce();

if(()==1)

{

string fuhao=运算符号();

(fuhao);

}

else if(()==2)

{

string fuhao=运算符号();

(1,fuhao);

}

else if(()==3)

{

string fuhao=运算符号();

string number1=(string)first();

string number2=(string)t();

string 运算符号=(string)(1);

try

{

double n1=ouble(number1);

double n2=ouble(number2);

double n=0;

if((”+“))

{

n=n1+n2;

}

else if((”-“))

{

n=n1-n2;

}

else if((”*“))

{

n=n1*n2;

}

else if((”/“))

{

n=n1/n2;

}

();

(”“+n);

(fuhao);

t(”“+n);

}

catch(exception ee)

{

}

}

}

else if(rce()==等号按钮)

{

是否按下等号=true;

if(()==1||()==2)

{

string num=(string)first();

t(”“+num);

}

else if(()==3)

{

string number1=(string)first();

string number2=(string)t();

string 运算符号=(string)(1);

try

{

double n1=ouble(number1);

double n2=ouble(number2);

double n=0;

if((”+“))

{

n=n1+n2;

}

else if((”-“))

{

n=n1-n2;

}

else if((”*“))

{

n=n1*n2;

}

else if((”/“))

{

n=n1/n2;

}

t(”“+n);

(0,”“+n);

last();

last();

}

catch(exception ee)

{

}

}

}

else if(rce()==小数点按钮)

{

if(()==0)

{

是否按下等号=false;

}

else if(()==1)

{

string dot=el();

string num=(string)first();

string s=null;

if(f(dot)==-1)

{

s=(dot);

(0,s);

}

else

{

s=num;

}

(0,s);

t(s);

}

else if(()==3)

{

string dot=el();

string num=(string)t();

string s=null;

if(f(dot)==-1)

{

s=(dot);

(2,s);

}

else

{

s=num;

}

t(s);

}

}

else if(rce()==退格按钮)

{

if(()==1)

{

string num=(string)first();

if(()>=1)

{

num=ing(0,()-1);

(0,num);

t(num);

}

else

{

last();

t(”0“);

}

}

else if(()==3)

{

string num=(string)t();

if(()>=1)

{ num=ing(0,()-1);

(2,num);

t(num);

}

else

{

last();

t(”0“);

}

}

}

else if(rce()==正负号按钮)

{

if(()==1)

{

string number1=(string)first();

try

{

double d=ouble(number1);

d=-1*d;

string str=f(d);

(0,str);

t(str);

}

catch(exception ee)

{

}

}

else if(()==3)

{

string number2=(string)t();

try

{

double d=ouble(number2);

d=-1*d;

string str=f(d);

(2,str);

t(str);

}

catch(exception ee){

}

}

}

else if(rce()==求倒数按钮)

{

if(()==1||()==2)

{

string number1=(string)first();

try

{

double d=ouble(number1);

d=1.0/d;

string str=f(d);

(0,str);

t(str);

}

catch(exception ee){

}

}

else if(()==3)

{

string number2=(string)t();

try

{

double d=ouble(number2);

d=1.0/d;

string str=f(d);

(0,str);

t(str);

}

catch(exception ee){

}

}

}

else if(rce()==清零按钮)

{

是否按下等号=false;

t(”0“);

();

}

} public static void main(string args[])

{

new computerpad();

}

}

package computerpad;import .*;import .event.*;import .*;public class numberbutton extends button {

int number;

public numberbutton(int number)

{

super(”"+number);

=number;

setforeground();

}

public int getnumber()

{

return number;

} }

import .*;import .event.*;import .*;public class operationbutton extends button {

string 运算符号;

public operationbutton(string s)

{

super(s);

运算符号=s;

setforeground();

}

public string get运算符号()

{

return 运算符号;

} } 14 java实训心得:

未接触java之前,听人说java这门语言如何的强大和难以入门,但学习之后,给我的感觉却是语言没有所谓的难于不难,关键是自己有没有真正投入去学,有没有花时间去学。java是一门很好的语言,经过周围人对java的宣传,我一开始不敢去学习这门语言,因为一门高级语言总是让人想到一开始的学习会很难,但是后来在自己的努力和老师同学的帮助下,我加入了java学习者的行列。

老师把我们带进了门,那么,以后漫长的深入学习还是要靠自己。经常性的编写一些程序,或则去看懂、研究透别人编写的程序对于我们打好基础是非常有利的。让我们怀着对java的一腔热情,用自己的刻苦努力去把java学好。将来,用自己的成绩去回报有恩于我们的社会、家人和朋友。

java编程笔试题 java程序员笔试题篇二

西安英泰移动通信学院s2级java编程语言测试题 1

java编程语言面试题

一、简答题

1、简述用java编程语言编写、编译、解释和执行过程。

2、简述在java jdk中,程序的作用。

3、简述java编程语言中的数组和c编程语言中定义数组有什么区别。

4、简述类与对象的关系。对象的方法和类的方法是否为一回事?

5、jvm在解析代码person p1=new person()和new person()时有什么区别?

6、简述this关键字的四中用途。

7、简述构造函数的作用。

8、分别简述static和final关键字的意义。

9、简述抽象类和接口的区别,并阐明抽象类和接口的用途。

10、简述多态的概念和意义。

11、简述异常和错误的区别。

12、简述如何创建和启动一个线程的两种方法

13、简述栈内存和堆内存分别用来做什么。

14、简述throw关键字在程序中抛出的是什么。

15、在一个类的public static void method()中,能够直接使用该类什么类型的成员。

二、计算题

1、在类runner中定义一个方法move(),要求这个方法的参数是一个实现了接口runnable的匿名内部类的对象,该接口中的方法中的内容自己可以决定。

2、类outer中与方法属性平行定义的内部类为inner{ public void dostuff(){}},写出在另一个类testinner的public static void main(string s)中调用方法dostuff()的代码。

3、类book{ public void insert(string id)throws exception{…}}中的方法被类testbook中public void testinser()方法调用,写出该方法中的主要代码。

4、两个顶级包test1和test2,,再用winrar打开时,会在浏览器上看到下列层次;

◎meta-inf

◎test1

◎test2

注:◎为文件夹

请写出操作过程,并写出运行的命令行程序(提示:用jar.......).5、同一个线程类threadtest中定义了:

public synchronized void sale(){...}

synchronized(str){...}

写出能使这两个类成员保持同步的改进代码。

6、解释类class q{

private string name=“李四”;

private string sex=“女”;

boolean bfull=false;

public synchronized void put(string name,string sex){

if(bfull)

try{

wait();

=name;

}catch(interruptedexception e){}

try{

(10);

}catch(exception e){

n(sage());

}

=sex;

bfull=true;

notify();

}

public synchronized void get()

{

if(!bfull)

try{

wait();

}catch(interruptedexception e){}

n(name + “----” + sex);

bfull=false;

notify();

}

}

中wait()、notify()、sleep()诸方法的作用。

7、在类class testinteger{

public static void main(string[] args){

int w =。。。。。。。。。。。。。。。。。。。。// 将args[0]转换int型的方法

int h =。。。。。。。。。。。。。。。。。。。。//将args[1]转换int型的另一种方法//int h = f(args[1]).intvalue();//第三种方法

for(int i=0;i

stringbuffer sb=new stringbuffer();

for(int j=0;j

('*');

}

n(ng());

}

}

}

中,args[0]的值为:“1234”,args[1]的值为:“5678”,请上面代码块中的……………处填写代码。

8、下面类

import .*;

public class testvector{

public static void main(string [] args){

int b=0;

vector v=new vector();n(“please enter number:”);

while(true){

try{

b= ();//……….} catch(exception e){

n(sage());

}

if(b=='r' || b== 'n')

break;

else{

int num=b-'0';

ment(new integer(num));//………..}

}

int sum=0;

enumeration e=ts();//…………………

while(eelements()){

integer intobj=(integer)ement();//………………..sum += ue();

}

n(sum);

}

}

中,请在诸单行注释//。。。。中解释其左边一行代码的意义。

9、下面类

import .*;

public class datastreamtest{

public static void main(string[] args){

try{

fileoutputstream fos=new fileoutputstream(“c:”);//…….bufferedoutputstream bos= new bufferedoutputstream(fos);//……

dataoutputstream dos= new dataoutputstream(bos);//……..tf(“ab中国”);//………

ytes(“ab中国”);

hars(“ab中国”);

();//…………

fileinputstream fis=new fileinputstream(“”);//…….bufferedinputstream bis=new bufferedinputstream(fis);//…….datainputstream dis=new datainputstream(bis);//…….n(f());

();

}catch(exception e){

n(sage());

}

}

}

中,请在诸单行注释//。。。。中解释其左边一行代码的意义。

10、已知接口:interface pci {

voidstart();

voidstop();

}

要求:写两个类:networkcard,soundcard分别实现上面接口的方法(内容自编),并写第三个类mainboard,该类中的方法install(pci p)应用networkcard,soundcard两个类对象的方法。根据上面的要求,填写下面的代码:

class assembler

{

public static void main(string []args)

{

//在下面写代码….}

}

class networkcard ….{

}

class soundcard…………{

}

class mainboard…………………………………..{

install(pci p){

}

}

java编程笔试题 java程序员笔试题篇三

第一章初识java 1.程序是为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。

包括编程语言和相关的技术。

主要用于开发,桌面应用程序和internet应用程序。4.开发一个java应用程序的基本步骤:编写源程序,编译程序和运行程序。为扩展名,为扩展名。文件,文件。

5.编写java程序要符合java编码规范,为程序编写注释可大大增加程序的阅读性。

ise是一个功能强大的集成开发环境(ide)。它的各种窗口便于java程序的开发,调试和管理。

第二章变量、数据类型和运算符

1.变量是一个数据存储空间的表示,它是存储数据的基本单元。变量的命名规则:

(1)必须以字母,“_”,“$”开头。(2)可以包括数字,但不能以数字开头(3)不能包括除“_”,“$”以外的特殊符号(4)不能使用java语言关键字或者保留字(goto)

中数据类型分为基本数据类型和引用数据类型,基本数据类型有整型(int),双精度浮点型(double),字符型(char)和字符串(string)。3.变量要先声明并赋值,才能使用。提供各种类型的运算符,具体如下。

(1)赋值运算(=)(2)算术运算符(+,-,*,/,%)(3)关系运算符(>,>=,<,<=,==,!=)(4)条件运算符(条件?表达式1:表达式2)(5)逻辑运算符(&& , || ,!, & , |)&&(短路与)与&的区别:&&进行判断时,当第一个条件为假,则不需要判断第二个条件,结果为假。&进行判断时,即使第一个条件为假时,也需要判断完第二个条件才能给出结果为假。||(短路或)与|的区别:与上同理(5)位运算符(&, | , << , >> , >>>)5.数据类型转换是为了方便不同类型的数据之间进行运算

6.数据类型转换包括了自动类型转换和强制类型转换,自动类型转换需要满足类型兼容且目标类型大于源类型的条件

中使用boolean类型表示真假,boolean类型的两个值为true和false。

中的关系运算符可以用于来比较大小,高低,多少等,比较厚的结果是boolean类型。

提供scanner类,可以实现从控制台获取键盘上输入的信息

第三章选择结构(一)java中的if选择结构,包括以下形式

(1)基本的if选择结构:可以处理单一或组合条件的情况(2)if-else选择结构:可以处理简单的条件分支情况(3)多重if选择结构:可以处理连续区间的条件分支情况(4)嵌套if选择结构:可以处理复杂的条件分支情况

第四章选择结构(二)选择结构适用于进行等值判断

关键字后面小括号里表达式的值可以是int , short , byte , char , 枚举 , string(jdk1.7开始支持)

第五章循环结构(一)1.循环结构由循环结构和循环操作构成,只要满足循环条件,循环操作就会反复执行

2.使用循环结构解决问题问题的步骤:分析循环条件和循环操作,套用循环结构的语法写出代码,检查循环能否退出

循环结构是先判断后执行,do-while是先执行,后判断。do-while至少执行一次。

调试:设置断点,单步运行,观察变量

第六章循环结构(二)循环结构的语法结构如下

for(表达式1:表达式2:表达式3){

} //循环体

表达式1:循环结构的初始部分,为循环变量赋初值 表达式2:循环结构的循环条件

表达式3:循环条件的迭代部分,通常用来修改循环变量的值 2.用break和continue语句控制流程

(1)break语句用于终止某个循环,程序跳转到循环体外的下一条语句。break也可以在switch语句中使用

(2)continue语句用于跳出本次循环,进入下一次循环

(3)return可以结束当前方法的执行并退出,返回调用该方法的语句处

第七章数组

1.数组是可以在内存中连续存储多个元素的结构,数组中的所有元素必须属于相同的数据类型

2.数组中的元素通过数组的下标进行访问,数组的下标从0开始 3数组可用一个循环为元素赋值,或用一个循环输出数组中的元素信息

可获得数组长度

5.利用arrays.提供的sort()方法可以方便的对数组中的元素进行排序 6.二维数组实际上就是一个一维数组,他的每个元素又是一个一维数组。

第八章循环结构进阶

1.数组的输入排序,选择排序,冒泡排序

2.在二重循环中可以使用break、continue语句控制程序的执行 选择排序:

思路:每次循环得到最小值的下标,然后交换数据。如果交换的位置等于原来的位置,则不交换。插入排序:

思路:将数据插入到已排序的数组中。

java编程笔试题 java程序员笔试题篇四

in the following code, which is the earliest statement, where the object originally held in e, may be garbage collected:

class test {

static void main(string args []){

ee e = new employee(“bob”, 48);

atepay();

n(etails());

6.e = null;

7.e = new employee(“denise”, 36);

atepay();

n(etails());

10.}

11.}

only one:

in the following code, which is the earliest statement, where the object originally held in e, may be garbage collected:

class test {

static void main(string args []){

ee e = new employee(“bob”, 48);

atepay();

n(etails());

6.e = null;

7.e = new employee(“denise”, 36);

atepay();

n(etails());

10.}

11.}

only one:

10

11

7

8

2:exhibit :

class test(e static int j = 0;

e static boolean methodb(int k)(5.j += k;

true;

6.)

static void methoda(int i){

n b:

10.b = i < 10 | methodb(4);

11.b = i < 10 || methodb(8);

12.)

static void main(string args[] }(a(0);

n(j);

17.)

18.)

what is the result?

program prints “0”

program prints “4”

program prints “8”

program prints “12”

3:what is written to the standard output given the following statement:n(4|7);

select the right answer:

a.4

b.5

c.6

d.7

4:

select valid identifier of java:

select valid identifier of java:

a.%passwd

b.3d_game

c.$charge

5:设有变量说明语句int a=1,b=0;

则执行以下程序段的输出结果为()。

switch(a)

{

case 1:

switch(b)

{

case 0:printf(“**0**”);break;

case 1:printf(“**1**”);break;

}

case 2:printf(“**2**”);break;

}

printf(“ ”);

a.**0**

b.**0****2**

c.**0****1****2**

d.有语法错误

6:in the following pieces of code, which one will compile without any error?

buffer sb1 = “abcd”;

n b = new boolean(“abcd”);

c.c: byte b = 255;

fl = 1.2;

7:

what is the result when you compile and run the following code?

public class throwsdemo

{

static void throwmethod()

{

n(“inside throwmethod.”);

throw new illegalaccessexception(“demo”);

}

public static void main(string args[])

{

try

{

throwmethod();

}

catch(illegalaccessexception e)

{

n(“caught ” + e);

}

}

}

choices:

what is the result when you compile and run the following code?

public class throwsdemo

{

static void throwmethod()

{

n(“inside throwmethod.”);

throw new illegalaccessexception(“demo”);

}

public static void main(string args[])

{

try

{

throwmethod();

}

catch(illegalaccessexception e)

{

n(“caught ” + e);

}

}

}

choices:

ation error

e error

e successfully, nothing is ed by caught:laccessexcption: demo

8:which of the following statements are not legal?

l = 4990;

i = 4l;

d = 34.4;

t = 0.9f.9:

give the following java class:

public class example{

public static void main(string args[]){

static int x[] = new int[15];

n(x[5]);

}

}

which statement is corrected?

give the following java class:

public class example{

public static void main(string args[]){

static int x[] = new int[15];

n(x[5]);

}

}

which statement is corrected?

compile, some error will run, some error will is is null.10:下面关于变量及其范围的陈述哪些是错的。

a.实例变量是类的成员变量。

b.实例变量用关键字static声明。

c.在方法中定义的局部变量在该方法被执行时创建

d.局部变量在使用前必须被初始化。

11:

public class x{

public object m(){

object o = new float(3.14f);//line 3

object [] oa = new object[1];//line 4

oa[0] = o;//line 5

o=null;//line 6

return oa[0];//line 7

}

}

when is the float object, created in line 3,eligible for garbage collection?

public class x{

public object m(){

object o = new float(3.14f);//line 3

object [] oa = new object[1];//line 4

oa[0] = o;//line 5

o=null;//line 6

return oa[0];//line 7

}

}

when is the float object, created in line 3,eligible for garbage collection?

after line after line 6

after line 7(that is,as the method returns)

in this method

12:

which is the most appropriate code snippet that can be inserted at line 18 in the following code?

(assume that the code is compiled and run with assertions enabled)

.*;

class asserttest

4.{

e hashmap cctld;

asserttest()

8.{

= new hashmap();

(“in”, “india”);

(“uk”, “united kingdom”);

(“au”, “australia”);

13.// more code...14.}

15.// other methods.... string getcountry(string countrycode)

17.{

18.// what should be inserted here?

country =(string)(countrycode);

country;

21.}

22.}

which is the most appropriate code snippet that can be inserted at line 18 in the following code?

(assume that the code is compiled and run with assertions enabled)

.*;

class asserttest

4.{

e hashmap cctld;

asserttest()

8.{

= new hashmap();

(“in”, “india”);

(“uk”, “united kingdom”);

(“au”, “australia”);

13.// more code...14.}

15.// other methods.... string getcountry(string countrycode)

17.{

18.// what should be inserted here?

country =(string)(countrycode);

country;

21.}

22.}

countrycode!= null;

countrycode!= null : “country code can not be null”;

cctld!= null : “no country code data is available”;

cctld : “no country code data is available”;

13:

give the following code:

public class example{

public static void main(string args[]){

int l=0;

do{

n(“doing it for l is:”+l);

}while(—l>0)

n(“finish”);

}

}

which well be output:

give the following code:

public class example{

public static void main(string args[]){

int l=0;

do{

n(“doing it for l is:”+l);

}while(—l>0)

n(“finish”);

}

}

which well be output:

it for l is 3

it for l is 1

it for l is 2

it for l is 0

14:which statements about java code security are not true?

bytecode verifier loads all classes needed for the execution of a ing code is performed by the runtime runtime the bytecodes are loaded, checked and run in an interpreter. class loader adds security by separating the namespaces for the classes of the local file system from those imported from network sources.15:a class design requires that a member variable should be accessible only by same package, which modifer word should be used?

ted

modifer

e

16:character流与byte流的区别是

a.每次读入的字节数不同

b.前者带有缓冲,后者没有

c.前者是块读写,后者是字节读写

d.二者没有区别,可以互换使用

简答题

17:找出两个字符串中最大子字符串,如“abractyeyt”,“dgdsaeactyey”的最大子串为“actyet”

18:假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法吗?

19:到底在哪里使用cascade=“...”?

20:使用tomcat部署应用程序 emoryerror 吗?如何解决的。

21:请写一个java程序实现数据库缓冲池的功能?

22:有200个正整数,且每个数均在1000至9999之间。请编制函数,其函数的功能是:要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。

23:anonymous inner class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

24:找出字符串a中包含的字符可以进行的所有不同组合。例如:abccd中,ab,ac,bc,cc,abd等都是可能的组合。

25:下面的代码在绝大部分时间内都运行得很正常,请问在什么情况下会出现问题?问题的根源在哪里?

import .linkedlist;

public class stack {

linkedlist list = new linkedlist();

public synchronized void push(object x){

synchronized(list){

t(x);

notify();

}

}

public synchronized object pop()

throws exception {

synchronized(list){

if(()<= 0){

wait();

}

return last();

}

}

}

java编程笔试题 java程序员笔试题篇五

38当乌云布满天空时,悲观的人看到的是“黑云压城城欲摧”,乐观的人看到的是“甲光向日金鳞开”。无论处在什么厄运中,只要保持乐观的心态,总能找到这样奇特的草莓。最近有一篇文章,说两位退休的美国大学教授上书反对将java作为编程教学语言,对此我表示高度认同。对于java,我并不反感,而且相信它在工业应用中的地位不可取代,但是,我一直反对将java作为主要的编程教学语言,因为教学语言承担着与生产语言不同的任务,它必须能够帮助学生奠定坚实的技术基础,塑造核心技术能力。在这方面,java不能够胜任。

1990年代中期以前,美国的计算机编程入门教育以pascal为主。我的一位美国程序员朋友至今还怀念他与pascal为伴的高中年代。到了1990年代中后期,由于ansi c语言“纠正”了早期c语言的一些不适合编程教学的问题,因此成为很多美国高中和大学编程入门课的教学语言。1998年,美国指导编程教学的一个协会推荐将c++作为入门教学语言,在当时引起很大的反响,认为是编程教育方面的一个重要进步。但遗憾的是,c++非常复杂,而当时c++语言的教育体系又非常不成熟,因此很多地方的教学方法不得当,把学生迅速拖入无边无际的语言细节当中,引起了学生痛苦的抱怨。大约经过两三年不成功的实践之后,在本世纪初,美国计算机教育界普遍接受java作为编程入门语言。此后在很短的时间里,java迅速成为美国高中和大学里的首选编程教学语言,老师教得轻松,学生学得甜蜜,所以这个局面一直持续到现在。

而在中国,basic语言及其变体一直到1990年代中期都还是“算法语言”课程的主要教学内容,充分折射出当时中国计算机教学与工业应用之间的脱节。只是到了1990年代后期,c语言才确立了在中国工科计算机编程入门教育中的主流地位。到现在为止,大部分工科学生都“必修”“c程序设计语言”这门课程。不过事实上,根据我的了解,这门课程的总体教学质量相当糟糕,大部分学生可以说是满怀希望而来,两手空空而去。在这种情况下,中国高校计算机编程入门教育已经开始悄悄向java过渡了。据我所知,有一些名校已经开始将java设为编程入门课程,并且认为这是与国际接轨进步标志。

在我的朋友圈子里,大多数真正的一线开发者和技术领导者,对于将java作为入门教学语言的“发展方向”都持质疑态度。他们中很多人目前主要的工作都集中在java上,因此这种态度并非来自所谓语言宗教情绪,而是来自他们招聘和实际工作中的感受。他们发现,只学习java、c#、vb等“现代”编程语言的学生,精于拿来主义,长于整合和快速开发,思维活跃,生产效率高,让他们来做直截了当的、有章可循的、非研究性和非创新性的工作比较合适,但是基础不扎实,对计算机系统的理解薄弱,处理细节和矛盾的能力不足,一旦他们熟悉的套路用不上,则缺少自主分析问题、解决问题的知识、能力和经验。

今天看到两位教授的“上书”,才知道原来他们也有同感。只不过这两位教授说的更直白,直接反对将java作为入门编程语言,而是冒天下之大不韪,公然号召开历史倒车,要求退回到c、c++、lisp和ada去。

我是支持两位教授的。我认为,java、c#、vb和其它虚拟机之上的语言都不适合作为专业程序员的入门教学语言。在中国还非常缺乏具有创新和独立解决问题的高水平程序员的局面下,我们应该认真做好的事情是努力提高c/c++的教学质量,而不是图快活转向java。

教学语言的选择是至关重要的事情。作为大多数学生第一种需要认真学习理解的编程语

言,教学语言将会成为他们中间很多人的“编程母语”,深深地烙印在学生的思维方式中。这个编程母语要帮助学生破除计算机和软件的神秘感,建立对于程序的基本认识和对计算机模型的最初理解。在后续专业基础课和专业课程的学习中,这门编程语言应该作为主要工具贯穿始终,帮助学生认识计算机系统,掌握算法与数据结构技能,熟悉操作系统概念,理解编译原理知识,理解软件抽象及软件设计的基本思想,完成一定量的课程及课外项目实践,建立正确的软件开发实践习惯。不但如此,这种教学语言必须是工业界的主流语言,否则学生学非所用,学习动力无法保证。

按照这个标准来衡量,java适合于作为主要的编程教学语言吗?我不这么认为。首先,我承认java在教学上有一些优势,比如其开发环境和工具支持非常成熟,有助于培养学生正确的编程习惯;java是当今第一工业主流语言,标准类库非常全面,可以迅速地开发具有实际用途的程序,有助于激发和保持学生的兴趣;而在数据结构、算法、编译原理的教学方面,java也毫不落于下风,在软件抽象设计(面向对象)方面,java还有着明显的优势;特别是在并行编程的教学方面,java 1.5 concurrency包提供的优势是压倒性的。尽管有如上这些优势,但java作为教学语言存在着一个致命的缺陷,即它是一个虚拟机语言,这一点就足以把它从教学语言的名单上去掉。

作为一个虚拟机语言,java对开发者隔绝了下层的真实系统,从而构造了一个近乎完美的环境,在这个环境里,世界上只有一种机器,一个操作系统,内存是无限的,所有的机器都具有相同的字节顺序和一致的类型约定,为了设计的优美而牺牲速度永远是正义行为,从反射到运行时自动加载,从完备的容器类到统一字符编码,一大堆漂亮的功能都可以不费吹灰之力唾手而得。要是这个世界上每台计算机都是一个java机器,每项编程任务都可以在这样一个近乎完美的环境中开发,那毫无以为,java是最合适的编程教学语言。但是事实上呢?这样一个完美的环境是java力量的源泉,但这却不是真实的世界。在真实世界里,我们可能面对非常原始的环境,苛刻的运行时限制,复杂多变的系统环境,令人窒息的细节魔鬼,要对付这些东西,需要开发者具有在应对复杂性,自己构造环境,在诸多限制条件下寻找解决方案的能力。而这种能力,被无数人无数次地证明是软件开发、特别是软件创新的核心能力。把java作为教学语言,恰恰会导致这种核心能力的缺失。除此之外,如果耐心观察的话,不难发现,几乎在任何软件领域里的创新性成果都首先是由c/c++语言实现的,原因很简单,java是站在c/c++基础之上的,只有c/c++先把大路趟开,java才能够顺势而上。

相反,尽管c/c++语言作为教学语言有很多的不足,比如不同环境下开发模式差异大,细节繁多,开发效率低,容易犯错,测试和调试困难,学习者难以保持动力,等等,但是这些问题都可以解决。而c/c++的关键优点,是能够让学习者在真实的计算机抽象上、在大量的细节和矛盾中学会思考,学会解决问题,学会了解真实的系统,知轻重,明生死,从而建立核心能力。掌握了c/c++语言,再去学习和理解java、c#、python、ruby和其它语言,就比较容易达到更高的境界。反之,如果习惯了舒舒服服躺在完美世界里当阔少,那就很难有勇气面对真实的世界。当然,很多开发者认为,现在更重要的能力是理解业务、整合现有资源的能力,而不是处理底层细节的技术。这种说法放在个人身上没有问题,但是不能成为整个编程教育的指导思想。我们需要各个层面上的人才,精通业务和设计的架构师固然很重要,但能够在底层作出创新成果的编程高手实际上更为稀缺和珍贵,很多时候也能够创造更大的价值。而且,更重要的是,一个精通系统知识的开发者在往上走的时候不会遇到大的障碍,而一个只知道拼装组合的“高级设计师”,往往连往下看的勇气都没有。

java的另外一个问题,是其所倡导的繁琐设计风格,一个对象套一个对象,一个对象叠一个对象,概念之间彼此横七竖八地互相依赖,人为制造出一大堆貌似精美、实则累赘的所谓设计。这个问题我已经批评过多次,并且相信这股歪风一定会最终被人们抛弃,java最终会归于质朴。但是在这一天到来之前,java对于初学者来说,很可能蒙住他们的双眼,使他们看不到软件设计中最可贵的简单性和优美的统一,体会不到数据和程序的统一。在这一点上,c表现的非常好,而c++如果教学得体,可以做的更好。

当然,这并不是为现在的c/c++教学辩护。恰恰相反,从我了解的情况来看,目前普通高校的c/c++教学质量非常令人担忧。学生学不会,而且越学越没有兴趣,老师则感到教起来很棘手,迫于现实情况往往选择敷衍了事。反而是教java,无论如何学生还能学到一点东西,对就业也有直接的帮助。至于学生的核心能力确实,发展后劲不足等问题,就让他们在现实工作中自己解决吧。坦率地说,这种想法也很有道理。不过,从教学角度来说,我认为老师们还是应该积极考虑如何提高c/c++的教学质量。毕竟学生阶段是十分宝贵的,基础不在这个时期夯实,将来想弥补,就算不是完全不可能,也将付出十倍的代价。本着对学生职业生涯的负责态度,还是应该帮助学生达到这个阶段应该达到的目标。在两位教授的公开信里,也充分表达出这个意思。

我赞成的编程教育过程,应当是以c/c++(基本上是c)为主线,贯穿起算法、数据结构、系统原理、编译和数据处理、软件设计和组件技术等关键知识领域,让学生能够从根本上理解现代软件系统的原理和构造,并通过有效的练习建立正确的软件设计观念和良好的工程实践习惯。在这个基础上,无论将来是深入学习c++,还是进入java的繁荣世界,或者拥抱python、ruby,甚至于走向web开发,都会心领神会,势如破竹。

【本文地址:http://www.xuefen.com.cn/zuowen/2627560.html】

全文阅读已结束,如果需要下载本文请点击

下载此文档