- 浏览: 1217887 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (706)
- 全部博客(10000) (0)
- java基础 (123)
- 算法及数据结构 (64)
- SSH框架整合与平台系统分析 (11)
- j2ee (46)
- Oracle (95)
- SQL Server (11)
- javaScript (73)
- Ajax (22)
- jQuery (39)
- ExtJs (4)
- jsp (13)
- Servlet (6)
- struts1 (2)
- struts2 (33)
- Ibatis (2)
- hibernate (24)
- Spring (11)
- 设计模式 (8)
- 正则表达式 (9)
- UML (0)
- XML (9)
- linux (19)
- CSS (11)
- FreeMarker (4)
- nginx 与 memcached (6)
- SEO (5)
- Web 服务器 (11)
- junit 与 selenium2 (4)
- MyEclipse 有关的问题 (24)
- 生活杂感 (37)
- 看过的书 (2)
- 技术牛人 (2)
- 需要优化的例子 (3)
- English 学习 (7)
- bug修改的解决方法 (2)
- 数据库实战经验总结 (1)
- 期待解决的问题 (20)
- 等待自己学习的东西 (15)
- 自己公司代码结构总结 (15)
- 企业经营之道 (23)
- 工具管理 (1)
- 世范水晶 (2)
最新评论
-
hustkeai:
第一个方法是不对的
求一个Map中最大的value值,同时列出键,值 -
qq591920734:
java List 排序 Collections.sort() 对 List 排序(首先年龄排序,如果年龄相同,则按名字排序) -
qq591920734:
[color=orange][/color]包女包女不女
java List 排序 Collections.sort() 对 List 排序(首先年龄排序,如果年龄相同,则按名字排序) -
timer_yin:
seagrave 写道这个算法想法不错,但太耗时,我用1、2、 ...
用1、2、2、3、4、5这六个数字,数字排序经典算法 -
hellostory:
日常生活中,我们都不按你上面的那个方法算的!!!
JAVA小函数-计算日期差
分类:笔试 字号: 大大 中中 小小 一、
单项选择题
1.Java是从(
)语言改进重新设计。
A.Ada B.C++ C.Pasacal D.BASIC
答案:B
2.下列语句哪一个正确(
)
A. Java程序经编译后会产生machine code
B. Java程序经编译后会产生byte code
C. Java程序经编译后会产生DLL
D.
以上都不正确
答案:B
3.下列说法正确的有(
)
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D.
一个class只能定义一个constructor
答案:C
4.提供Java存取数据库能力的包是(
)
A.java.sql B.java.awt C.java.lang D.java.swing
答案:A
5.下列运算符合法的是(
)
A.&& B.<> C.if D.:=
答案:A
6.执行如下程序代码
a=0;c=0;
do{
--c;
a=a-1;
}while(a>0);
后,C的值是(
)
A.0 B.1 C.-1 D.死循环
答案:C
7.下列哪一种叙述是正确的(
)
A. abstract修饰符可修饰字段、方法和类
B.
抽象方法的body部分必须用一对大括号{ }包住
C.
声明抽象方法,大括号可有可无
D.
声明抽象方法不可写出大括号
答案:D
8.下列语句正确的是(
)
A.
形式参数可被视为local variable
B.
形式参数可被字段修饰符修饰
C.
形式参数为方法被调用时,真正被传递的参数
D.
形式参数不可以是对象
答案:A
9.下列哪种说法是正确的(
)
A.
实例方法可直接调用超类的实例方法
B.
实例方法可直接调用超类的类方法
C.
实例方法可直接调用其他类的实例方法
D.
实例方法可直接调用本类的类方法
答案:D
二、
多项选择题
1.Java程序的种类有(
)
A.类(Class) B.Applet C.Application D.Servlet
2.下列说法正确的有(
)
A.
环境变量可在编译source code时指定
B.
在编译程序时,所能指定的环境变量不包括class path
C. javac一次可同时编译数个Java源文件
D. javac.exe能指定编译结果要置于哪个目录(directory)
答案:BCD
3.下列标识符不合法的有(
)
A.new B.$Usdollars C.1234 D.car.taxi
答案:ACD
4.下列说法错误的有(
)
A.
数组是一种对象
B.
数组属于一种原生类
C. int number=[]={31,23,33,43,35,63}
D.
数组的大小可以任意改变
答案:BCD
5.不能用来修饰interface的有(
)
A.private B.public C.protected D.static
答案:ACD
6.下列正确的有(
)
A. call by value不会改变实际参数的数值
B. call by reference能改变实际参数的参考地址
C. call by reference不能改变实际参数的参考地址
D. call by reference能改变实际参数的内容
答案:ACD
7.下列说法错误的有(
)
A.
在类方法中可用this来调用本类的类方法
B.
在类方法中调用本类的类方法时可直接调用
C.
在类方法中只能调用本类中的类方法
D.
在类方法中绝对不能调用实例方法
答案:ACD
8.下列说法错误的有(
)
A. Java面向对象语言容许单独的过程与函数存在
B. Java面向对象语言容许单独的方法存在
C. Java语言中的方法属于类中的成员(member)
D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同
答案:ABC
9.下列说法错误的有(
)
A.
能被java.exe成功运行的java class文件必须有main()方法
B. J2SDK就是Java API
C. Appletviewer.exe可利用jar选项运行.jar文件
D.
能被Appletviewer成功运行的java class文件必须有main()方法
答案:BCD
三、
判断题
1.Java程序中的起始类名称必须与存放该类的文件名相同。(
)
答案:正确
2.Unicode是用16位来表示一个字的。(
)
答案:正确
3.原生类中的数据类型均可任意转换。(
)
答案:错误
1.分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。
答案:
BOOL : if ( !a ) or if(a)
int : if ( a == 0)
float : const EXPRESSION EXP = 0.000001
if ( a < EXP && a >-EXP)
pointer : if ( a != NULL) or if(a == NULL)
2.请说出const与#define 相比,有何优点?
答案:1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。
2) 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。
3.简述数组与指针的区别?
数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。
(1)修改内容上的差别
char a[] = “hello”;
a[0] = ‘X’;
char *p = “world”; // 注意p 指向常量字符串
p[0] = ‘X’; // 编译器不能发现该错误,运行时错误
(2) 用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。
char a[] = "hello world";
char *p = a;
cout<< sizeof(a) << endl; // 12 字节
cout<< sizeof(p) << endl; // 4 字节
计算数组和指针的内存容量
void Func(char a[100])
{
cout<< sizeof(a) << endl; // 4 字节而不是100 字节
}
4.类成员函数的重载、覆盖和隐藏区别?
答案:
a.成员函数被重载的特征:
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。
b.覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。
c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)
5. There are two int variables: a and b, don’t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers.
答案:( ( a + b ) + abs( a - b ) ) / 2
6. 如何打印出当前源文件的文件名以及源文件的当前行号?
答案:
cout << __FILE__ ;
cout<<__LINE__ ;
__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。
7. main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?
答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4 (void);
void main( void )
{
String str("zhanglin");
_onexit( fn1 );
_onexit( fn2 );
_onexit( fn3 );
_onexit( fn4 );
printf( "This is executed first.\n" );
}
int fn1()
{
printf( "next.\n" );
return 0;
}
int fn2()
{
printf( "executed " );
return 0;
}
int fn3()
{
printf( "is " );
return 0;
}
int fn4()
{
printf( "This " );
return 0;
}
The _onexit function is passed the address of a function (func) to be called when the program terminates normally. Successive calls to _onexit create a register of functions that are executed in LIFO (last-in-first-out) order. The functions passed to _onexit cannot take parameters.
8. 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
答案:
#ifdef __cplusplus
cout<<"c++";
#else
cout<<"c";
#endif
9.文件中有一组整数,要求排序后输出到另一个文件中
答案:
#i nclude
#i nclude
using namespace std;
void Order(vector& data) //bubble sort
{
int count = data.size() ;
int tag = false ; // 设置是否需要继续冒泡的标志位
for ( int i = 0 ; i < count ; i++)
{
for ( int j = 0 ; j < count - i - 1 ; j++)
{
if ( data[j] > data[j+1])
{
tag = true ;
int temp = data[j] ;
data[j] = data[j+1] ;
data[j+1] = temp ;
}
}
if ( !tag )
break ;
}
}
void main( void )
{
vectordata;
ifstream in("c:\\data.txt");
if ( !in)
{
cout<<"file error!";
exit(1);
}
int temp;
while (!in.eof())
{
in>>temp;
data.push_back(temp);
}
in.close(); //关闭输入文件流
Order(data);
ofstream out("c:\\result.txt");
if ( !out)
{
cout<<"file error!";
exit(1);
}
for ( i = 0 ; i < data.size() ; i++)
out<<DATA[I]<<" ?;
10. 链表题:一个链表的结点结构
struct Node
{
int data ;
Node *next ;
};
typedef struct Node Node ;
(1)已知链表的头结点head,写一个函数把这个链表逆序 ( Intel)
Node * ReverseList(Node *head) //链表逆序
{
if ( head == NULL || head->next == NULL )
return head;
Node *p1 = head ;
Node *p2 = p1->next ;
Node *p3 = p2->next ;
p1->next = NULL ;
while ( p3 != NULL )
{
p2->next = p1 ;
p1 = p2 ;
p2 = p3 ;
p3 = p3->next ;
}
p2->next = p1 ;
head = p2 ;
return head ;
}
(2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)
Node * Merge(Node *head1 , Node *head2)
{
if ( head1 == NULL)
return head2 ;
if ( head2 == NULL)
return head1 ;
Node *head = NULL ;
Node *p1 = NULL;
Node *p2 = NULL;
if ( head1->data < head2->data )
{
head = head1 ;
p1 = head1->next;
p2 = head2 ;
}
else
{
head = head2 ;
p2 = head2->next ;
p1 = head1 ;
}
Node *pcurrent = head ;
while ( p1 != NULL && p2 != NULL)
{
if ( p1->data <= p2->data )
{
pcurrent->next = p1 ;
pcurrent = p1 ;
p1 = p1->next ;
}
else
{
pcurrent->next = p2 ;
pcurrent = p2 ;
p2 = p2->next ;
}
}
if ( p1 != NULL )
pcurrent->next = p1 ;
if ( p2 != NULL )
pcurrent->next = p2 ;
return head ;
}
(3)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。 (Autodesk)
答案:
Node * MergeRecursive(Node *head1 , Node *head2)
{
if ( head1 == NULL )
return head2 ;
if ( head2 == NULL)
return head1 ;
Node *head = NULL ;
if ( head1->data < head2->data )
{
head = head1 ;
head->next = MergeRecursive(head1->next,head2);
}
else
{
head = head2 ;
head->next = MergeRecursive(head1,head2->next);
}
return head ;
}
上海-亿川信息
A. UNIX B. Linux C windows NT或sever D OS X
2.中国的地域性顶级域名是: (C)
A. an B. bn C cn D dn
3.HTML中超连接的一对标记是: A
A. <a></a> B. <b></b> C <i></i> D <p></p>
4.下面哪种不属于VBscript程序的流程 (C)
A. 顺序 B. 选择 C 交叉 D 循环
5.Response.Write方法的作用是(A)
A 向浏览器输出动态数据
B 将用户信息提交到服务器
C 查询服务器中的数据
D 更新服务器数据
6.下面对在网站建设中Cookies的解释正确的是(B)
A 一种意大利小甜饼
B 保存用户信息的一个小型文本文件
C 保存在服务器上的用户信息文档
D 保存在用户上的小程序
7. 请问下面程序段执行完毕,页面上显示内容是什么:(C)
<%
Response.Write “<a href=’’http://www.sina.com.cn’’>新浪</a>”
%>
A. 新浪 B. <a href=’’http://www.sina.com.cn’’>新浪</a>
C. 新浪(超链接) D. 该句有错,无法正常输出
8 请问下面程序段执行完毕,页面上显示的内容是什么?(A)
<%
Response.Write “春秋”
Response.End
Response.Write “战国”
%>
A. 春秋 B. 战国
C. 春秋战国 D. 春秋(换行)战国
9.Application对象的默认有效期为多少分钟?(D)
A. 10 B. 15 C. 20 D. 应用程序从启动到结束
10. 下列Response对象的用法错误的是(A)
A <% Response.Write 输出到浏览器信息 %>
B <% = "输出到浏览器信息" %>
C <% Response.End %>
D 以上全都正确
、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)
快速排序的伪代码。
/ /使用快速排序方法对a[ 0 :n- 1 ]排序
从a[ 0 :n- 1 ]中选择一个元素作为m I d d l e,该元素为支点
把余下的元素分割为两段left 和r I g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点
递归地使用快速排序方法对left 进行排序
递归地使用快速排序方法对right 进行排序
所得结果为l e f t m I d d l e r I g h t
6、请对以下在J2EE中常用的名词进行解释(或简单描述)
web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接**互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。
EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。
JNDI:(Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系
,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
JMS:(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。
JTA:(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。
RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。
7、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。
用try来指定一块预防所有\"异常\"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的\"异常\"的类型。
Throw语句用来明确地抛出一个\"异常\"。
Throws用来标明一个成员函数可能抛出的各种\"异常\"。
Finally为确保一段代码不管发生什么\"异常\"都被执行一段代码。
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,\"异常\"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种\"异常\"进行处理,堆栈就会展开,直到遇到有处理这种\"异常\"的try语句。
1、字符串abcdefg,要求按逆序输出为gfedcba
public class Main {
public static void main(String[] args) {
StringBuffer buf = new StringBuffer("abcdefg");
buf = buf.reverse();
System.out.println(buf.toString());
}
}
2、使用字符串的正则判断是否全部由数字组成
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JAVA {
public static void main(String[] args) {
String regEx = "\\D+";
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String str = in.next();
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
if (!m.find()) {
System.out.println("输入的字符串全是数字");
} else {
System.out.println("输入的字符串不全是数字");
}
}
}
}
3、把当前日期转换成yyyy年MM月dd日
import java.text.SimpleDateFormat;
import java.util.Date;
public class JAVA {
public static void main(String[] args) {
SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日");
Date d = new Date();
String s = sf.format(d);
System.out.println(s);
}
}
4、编一个程序,它能读入两个正整数(第一个:n进制的基数(2-19) 第二个:要转换的十进制数),,并输出这个正整数的2-19进制形式,依次用A、B、C、D、E、F、G、H、I表示10、11、12、13、14、15、16、17、18。如输入为15 56时,输出为3B。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
char[] charaters = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' };
Scanner in = new Scanner(System.in);
StringBuffer ans = new StringBuffer("");
int base = 0;
int digit = 0;
base = in.nextInt();
digit = in.nextInt();
if (2 <= base && base <= 18) {
while (digit != 0) {
ans.append(charaters[digit % base]);
digit /= base;
}
ans = ans.reverse();
System.out.println(ans.toString());
} else {
System.out.println("Input Error!");
}
}
}
单项选择题
1.Java是从(
)语言改进重新设计。
A.Ada B.C++ C.Pasacal D.BASIC
答案:B
2.下列语句哪一个正确(
)
A. Java程序经编译后会产生machine code
B. Java程序经编译后会产生byte code
C. Java程序经编译后会产生DLL
D.
以上都不正确
答案:B
3.下列说法正确的有(
)
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D.
一个class只能定义一个constructor
答案:C
4.提供Java存取数据库能力的包是(
)
A.java.sql B.java.awt C.java.lang D.java.swing
答案:A
5.下列运算符合法的是(
)
A.&& B.<> C.if D.:=
答案:A
6.执行如下程序代码
a=0;c=0;
do{
--c;
a=a-1;
}while(a>0);
后,C的值是(
)
A.0 B.1 C.-1 D.死循环
答案:C
7.下列哪一种叙述是正确的(
)
A. abstract修饰符可修饰字段、方法和类
B.
抽象方法的body部分必须用一对大括号{ }包住
C.
声明抽象方法,大括号可有可无
D.
声明抽象方法不可写出大括号
答案:D
8.下列语句正确的是(
)
A.
形式参数可被视为local variable
B.
形式参数可被字段修饰符修饰
C.
形式参数为方法被调用时,真正被传递的参数
D.
形式参数不可以是对象
答案:A
9.下列哪种说法是正确的(
)
A.
实例方法可直接调用超类的实例方法
B.
实例方法可直接调用超类的类方法
C.
实例方法可直接调用其他类的实例方法
D.
实例方法可直接调用本类的类方法
答案:D
二、
多项选择题
1.Java程序的种类有(
)
A.类(Class) B.Applet C.Application D.Servlet
2.下列说法正确的有(
)
A.
环境变量可在编译source code时指定
B.
在编译程序时,所能指定的环境变量不包括class path
C. javac一次可同时编译数个Java源文件
D. javac.exe能指定编译结果要置于哪个目录(directory)
答案:BCD
3.下列标识符不合法的有(
)
A.new B.$Usdollars C.1234 D.car.taxi
答案:ACD
4.下列说法错误的有(
)
A.
数组是一种对象
B.
数组属于一种原生类
C. int number=[]={31,23,33,43,35,63}
D.
数组的大小可以任意改变
答案:BCD
5.不能用来修饰interface的有(
)
A.private B.public C.protected D.static
答案:ACD
6.下列正确的有(
)
A. call by value不会改变实际参数的数值
B. call by reference能改变实际参数的参考地址
C. call by reference不能改变实际参数的参考地址
D. call by reference能改变实际参数的内容
答案:ACD
7.下列说法错误的有(
)
A.
在类方法中可用this来调用本类的类方法
B.
在类方法中调用本类的类方法时可直接调用
C.
在类方法中只能调用本类中的类方法
D.
在类方法中绝对不能调用实例方法
答案:ACD
8.下列说法错误的有(
)
A. Java面向对象语言容许单独的过程与函数存在
B. Java面向对象语言容许单独的方法存在
C. Java语言中的方法属于类中的成员(member)
D. Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同
答案:ABC
9.下列说法错误的有(
)
A.
能被java.exe成功运行的java class文件必须有main()方法
B. J2SDK就是Java API
C. Appletviewer.exe可利用jar选项运行.jar文件
D.
能被Appletviewer成功运行的java class文件必须有main()方法
答案:BCD
三、
判断题
1.Java程序中的起始类名称必须与存放该类的文件名相同。(
)
答案:正确
2.Unicode是用16位来表示一个字的。(
)
答案:正确
3.原生类中的数据类型均可任意转换。(
)
答案:错误
1.分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。
答案:
BOOL : if ( !a ) or if(a)
int : if ( a == 0)
float : const EXPRESSION EXP = 0.000001
if ( a < EXP && a >-EXP)
pointer : if ( a != NULL) or if(a == NULL)
2.请说出const与#define 相比,有何优点?
答案:1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。
2) 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。
3.简述数组与指针的区别?
数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。
(1)修改内容上的差别
char a[] = “hello”;
a[0] = ‘X’;
char *p = “world”; // 注意p 指向常量字符串
p[0] = ‘X’; // 编译器不能发现该错误,运行时错误
(2) 用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。
char a[] = "hello world";
char *p = a;
cout<< sizeof(a) << endl; // 12 字节
cout<< sizeof(p) << endl; // 4 字节
计算数组和指针的内存容量
void Func(char a[100])
{
cout<< sizeof(a) << endl; // 4 字节而不是100 字节
}
4.类成员函数的重载、覆盖和隐藏区别?
答案:
a.成员函数被重载的特征:
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。
b.覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。
c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)
5. There are two int variables: a and b, don’t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers.
答案:( ( a + b ) + abs( a - b ) ) / 2
6. 如何打印出当前源文件的文件名以及源文件的当前行号?
答案:
cout << __FILE__ ;
cout<<__LINE__ ;
__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。
7. main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?
答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4 (void);
void main( void )
{
String str("zhanglin");
_onexit( fn1 );
_onexit( fn2 );
_onexit( fn3 );
_onexit( fn4 );
printf( "This is executed first.\n" );
}
int fn1()
{
printf( "next.\n" );
return 0;
}
int fn2()
{
printf( "executed " );
return 0;
}
int fn3()
{
printf( "is " );
return 0;
}
int fn4()
{
printf( "This " );
return 0;
}
The _onexit function is passed the address of a function (func) to be called when the program terminates normally. Successive calls to _onexit create a register of functions that are executed in LIFO (last-in-first-out) order. The functions passed to _onexit cannot take parameters.
8. 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?
答案:
#ifdef __cplusplus
cout<<"c++";
#else
cout<<"c";
#endif
9.文件中有一组整数,要求排序后输出到另一个文件中
答案:
#i nclude
#i nclude
using namespace std;
void Order(vector& data) //bubble sort
{
int count = data.size() ;
int tag = false ; // 设置是否需要继续冒泡的标志位
for ( int i = 0 ; i < count ; i++)
{
for ( int j = 0 ; j < count - i - 1 ; j++)
{
if ( data[j] > data[j+1])
{
tag = true ;
int temp = data[j] ;
data[j] = data[j+1] ;
data[j+1] = temp ;
}
}
if ( !tag )
break ;
}
}
void main( void )
{
vectordata;
ifstream in("c:\\data.txt");
if ( !in)
{
cout<<"file error!";
exit(1);
}
int temp;
while (!in.eof())
{
in>>temp;
data.push_back(temp);
}
in.close(); //关闭输入文件流
Order(data);
ofstream out("c:\\result.txt");
if ( !out)
{
cout<<"file error!";
exit(1);
}
for ( i = 0 ; i < data.size() ; i++)
out<<DATA[I]<<" ?;
10. 链表题:一个链表的结点结构
struct Node
{
int data ;
Node *next ;
};
typedef struct Node Node ;
(1)已知链表的头结点head,写一个函数把这个链表逆序 ( Intel)
Node * ReverseList(Node *head) //链表逆序
{
if ( head == NULL || head->next == NULL )
return head;
Node *p1 = head ;
Node *p2 = p1->next ;
Node *p3 = p2->next ;
p1->next = NULL ;
while ( p3 != NULL )
{
p2->next = p1 ;
p1 = p2 ;
p2 = p3 ;
p3 = p3->next ;
}
p2->next = p1 ;
head = p2 ;
return head ;
}
(2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)
Node * Merge(Node *head1 , Node *head2)
{
if ( head1 == NULL)
return head2 ;
if ( head2 == NULL)
return head1 ;
Node *head = NULL ;
Node *p1 = NULL;
Node *p2 = NULL;
if ( head1->data < head2->data )
{
head = head1 ;
p1 = head1->next;
p2 = head2 ;
}
else
{
head = head2 ;
p2 = head2->next ;
p1 = head1 ;
}
Node *pcurrent = head ;
while ( p1 != NULL && p2 != NULL)
{
if ( p1->data <= p2->data )
{
pcurrent->next = p1 ;
pcurrent = p1 ;
p1 = p1->next ;
}
else
{
pcurrent->next = p2 ;
pcurrent = p2 ;
p2 = p2->next ;
}
}
if ( p1 != NULL )
pcurrent->next = p1 ;
if ( p2 != NULL )
pcurrent->next = p2 ;
return head ;
}
(3)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。 (Autodesk)
答案:
Node * MergeRecursive(Node *head1 , Node *head2)
{
if ( head1 == NULL )
return head2 ;
if ( head2 == NULL)
return head1 ;
Node *head = NULL ;
if ( head1->data < head2->data )
{
head = head1 ;
head->next = MergeRecursive(head1->next,head2);
}
else
{
head = head2 ;
head->next = MergeRecursive(head1,head2->next);
}
return head ;
}
上海-亿川信息
A. UNIX B. Linux C windows NT或sever D OS X
2.中国的地域性顶级域名是: (C)
A. an B. bn C cn D dn
3.HTML中超连接的一对标记是: A
A. <a></a> B. <b></b> C <i></i> D <p></p>
4.下面哪种不属于VBscript程序的流程 (C)
A. 顺序 B. 选择 C 交叉 D 循环
5.Response.Write方法的作用是(A)
A 向浏览器输出动态数据
B 将用户信息提交到服务器
C 查询服务器中的数据
D 更新服务器数据
6.下面对在网站建设中Cookies的解释正确的是(B)
A 一种意大利小甜饼
B 保存用户信息的一个小型文本文件
C 保存在服务器上的用户信息文档
D 保存在用户上的小程序
7. 请问下面程序段执行完毕,页面上显示内容是什么:(C)
<%
Response.Write “<a href=’’http://www.sina.com.cn’’>新浪</a>”
%>
A. 新浪 B. <a href=’’http://www.sina.com.cn’’>新浪</a>
C. 新浪(超链接) D. 该句有错,无法正常输出
8 请问下面程序段执行完毕,页面上显示的内容是什么?(A)
<%
Response.Write “春秋”
Response.End
Response.Write “战国”
%>
A. 春秋 B. 战国
C. 春秋战国 D. 春秋(换行)战国
9.Application对象的默认有效期为多少分钟?(D)
A. 10 B. 15 C. 20 D. 应用程序从启动到结束
10. 下列Response对象的用法错误的是(A)
A <% Response.Write 输出到浏览器信息 %>
B <% = "输出到浏览器信息" %>
C <% Response.End %>
D 以上全都正确
、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)
快速排序的伪代码。
/ /使用快速排序方法对a[ 0 :n- 1 ]排序
从a[ 0 :n- 1 ]中选择一个元素作为m I d d l e,该元素为支点
把余下的元素分割为两段left 和r I g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点
递归地使用快速排序方法对left 进行排序
递归地使用快速排序方法对right 进行排序
所得结果为l e f t m I d d l e r I g h t
6、请对以下在J2EE中常用的名词进行解释(或简单描述)
web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接**互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。
EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。
JNDI:(Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系
,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
JMS:(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。
JTA:(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。
JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。
RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。
7、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。
用try来指定一块预防所有\"异常\"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的\"异常\"的类型。
Throw语句用来明确地抛出一个\"异常\"。
Throws用来标明一个成员函数可能抛出的各种\"异常\"。
Finally为确保一段代码不管发生什么\"异常\"都被执行一段代码。
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,\"异常\"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种\"异常\"进行处理,堆栈就会展开,直到遇到有处理这种\"异常\"的try语句。
1、字符串abcdefg,要求按逆序输出为gfedcba
public class Main {
public static void main(String[] args) {
StringBuffer buf = new StringBuffer("abcdefg");
buf = buf.reverse();
System.out.println(buf.toString());
}
}
2、使用字符串的正则判断是否全部由数字组成
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class JAVA {
public static void main(String[] args) {
String regEx = "\\D+";
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String str = in.next();
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
if (!m.find()) {
System.out.println("输入的字符串全是数字");
} else {
System.out.println("输入的字符串不全是数字");
}
}
}
}
3、把当前日期转换成yyyy年MM月dd日
import java.text.SimpleDateFormat;
import java.util.Date;
public class JAVA {
public static void main(String[] args) {
SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日");
Date d = new Date();
String s = sf.format(d);
System.out.println(s);
}
}
4、编一个程序,它能读入两个正整数(第一个:n进制的基数(2-19) 第二个:要转换的十进制数),,并输出这个正整数的2-19进制形式,依次用A、B、C、D、E、F、G、H、I表示10、11、12、13、14、15、16、17、18。如输入为15 56时,输出为3B。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
char[] charaters = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' };
Scanner in = new Scanner(System.in);
StringBuffer ans = new StringBuffer("");
int base = 0;
int digit = 0;
base = in.nextInt();
digit = in.nextInt();
if (2 <= base && base <= 18) {
while (digit != 0) {
ans.append(charaters[digit % base]);
digit /= base;
}
ans = ans.reverse();
System.out.println(ans.toString());
} else {
System.out.println("Input Error!");
}
}
}
发表评论
-
char 与 byte 互转
2013-10-21 16:24 1033char转byte char a='a'; byte b= ... -
全局变量 与 局部变量 赋值的问题
2013-09-18 11:48 1781全局变量: (1)在java中,类的全局变 ... -
java堆与栈 java String分配内存空间(详解)
2013-09-17 14:07 2059java堆栈 (转) jav ... -
int 与 Integer 什么情况下,必须分开用。
2013-09-17 00:23 18781、定义变量的时候。 double u= ... -
将一个交错数据合并为一个一维数组
2013-09-16 23:42 1116题目: 将一个交错数据合并为一个一维数组 输入: strJ ... -
ArrayList,LinkedList使用场景及性能说明
2013-09-14 11:06 998Java面试中关于容器类List,Set是必问题目。但在我的 ... -
ArrayList和LinkedList(转)
2013-09-14 01:27 1020对于处理一列数据项, ... -
java 连接池的实现过程
2013-09-12 21:39 828java 连接池的实现过程 -
数据库 查询成绩及格的人
2013-09-11 22:53 9821、建表结构 -- 创建表create table ... -
关于接口的定义
2013-09-10 22:15 894关于接口的定义: 1、接口 Illegal modifi ... -
在JAVA中一共有八种基本数据类型。
2013-09-09 20:26 1710在JAVA中一共有八种基本数据类型。 他们分别是by ... -
字节与字符的关系
2013-09-07 14:44 14291、字节(Byte):通常将可表示常用英文字符8位二进制称为一 ... -
java访问权限是什么?
2013-09-06 12:38 9261、private修饰词,表示成员是私有的,只有自身可以访问 ... -
java 子类重写父类的方法
2013-09-05 23:24 0java 子类重写父类的方法 若想实现一个合格重写方法,而 ... -
java变量,初始化快,构造函数的执行顺序
2013-09-05 23:11 933重载就是在同一个类中方法名字一样,参数列表不一样对返 ... -
CAS实现单点登录(SSO)经典完整教程
2013-09-04 23:23 1273CAS实现单点登录(SSO)经典完整教程 ... -
查找 字符串中 重复字符最多的个数
2013-09-03 12:13 1420public static void main(String[ ... -
java synchronized详解
2013-09-03 11:01 800一直对这些不是很懂。找了一下,看一下,供我以后再看: 第一 ... -
HashMap学习
2013-09-03 10:59 9331. HashMap概述: HashMap是基于哈希 ... -
Java中对Map(HashMap,TreeMap,Hashtable等)的排序
2013-09-03 10:57 1749Map hostpowerMap = new HashMap ...
相关推荐
这段描述中重复提及了“Java笔试题目汇总122题”,意味着这是一份包含了122道Java相关笔试题目的资料集合。这类汇总通常会覆盖Java语言的基础概念、核心API、面向对象编程原则等多个方面,是准备Java技术面试的重要...
Java笔试题目是企业在招聘Java开发人员时常用的筛选方式,它主要测试应聘者对Java语言的基础知识、编程能力、逻辑思维以及问题解决能力。本部分将根据"JAVA笔试题目"这一主题,深入解析Java笔试中可能出现的重点知识...
Java笔试题目大集合是针对求职者,特别是对计算机科学与技术、软件工程等相关专业毕业生的一份宝贵资源。这个集合通常包含各种类型的Java编程问题,旨在测试候选人的基础知识、编程技巧、算法理解以及问题解决能力。...
这个资源包提供了丰富的学习材料,包括130页的Java笔试题目整合,核心概念的详细解释,以及最新华为Java工程师的笔试题目和答案。 首先,"笔试概念题整理.doc"可能是对Java基础概念的梳理,可能包含类与对象、封装...
Java 笔试题目 本文档提供了 Java 笔试题目相关知识点的总结,涵盖面向对象编程、数据类型、字符串操作、异常处理、Servlet 生命周期等多方面的知识。 面向对象编程 1. 抽象:抽象是忽略一个主题中与当前目标无关...
### Java笔试题目汇总知识点解析 #### 一、面向对象的基本特征 面向对象编程(OOP)是现代软件开发中的一种核心编程范式,其主要特点包括:抽象、继承、封装和多态。 1. **抽象**: - **定义**:抽象是一种通过...
【百度Java笔试题目详解】 1. **同月同日生人数最少问题** 在1900个人中,想要找到最少有多少人同月同日出生,我们首先要考虑一年有多少天。1900年不是闰年,因此有365天。如果忽略二月29日,那么至少会有365个人...
Java笔试题目是评估应聘者对Java编程语言理解深度和广度的重要方式,涵盖了从基础知识到高级概念的各种问题。以下是一些可能在Java笔试中出现的知识点,并附带解答,以帮助你更好地准备这类考试。 1. **Java基础** ...
Java笔试题目是评估应聘者Java编程技能的一种常见方式,涵盖了从基础语法到高级概念的各种问题。这份打包的资源包含了五份不同的Java笔试题目,旨在帮助求职者准备面试或自我提升。下面,我们将深入探讨这些题目可能...
华为作为全球领先的ICT解决方案提供商,对Java技术的掌握有着很高的要求,其JAVA笔试题目是评估应聘者技术水平的重要环节。 这份"java_华为笔试题.doc"文档可能包含了一系列的Java基础理论问题、编程实践题目以及...
【Java笔试题目解析】 在Java开发中,索引在数据库中的使用是一个重要的性能优化手段。以下是对数据库索引优点和缺点的详细解释: **优点:** 1. **保证唯一性**:通过创建唯一性索引,可以确保数据库表中的每一行...
Java 笔试题目以及部分答案 Java 是一门面向对象的编程语言,广泛应用于 Android 开发、Web 开发、企业软件开发等领域。以下是 Java 笔试题目以及部分答案,涵盖了 Java 基础知识、Java 面向对象编程、Java 集合...
Java笔试题目是评估应聘者Java编程能力的重要环节,主要涵盖了基础语法、面向对象、集合框架、多线程、网络编程、数据库操作等多个方面。这里,我们深入探讨一下这些公司在Java笔试中可能涉及的关键知识点。 1. **...
综上所述,这份Java笔试题目覆盖了数据库查询、Servlet、JSP和Struts框架等多个方面的知识,对于希望进入Java开发领域的求职者来说是非常有价值的练习材料。希望以上内容能够帮助你更好地理解和准备这些知识点。
Java笔试题目是评估应聘者Java编程能力的重要环节,它涵盖了从基础语法到高级特性的各个方面。下面我们将深入探讨一些常见的Java笔试题目所涉及的知识点,帮助你更好地理解和准备这类考试。 1. **Java基础** - **...
Java笔试题目集合是一个非常实用的资源,包含了广泛的Java编程知识,旨在帮助准备Java程序员面试或笔试的人员。这个集合可能包括了从基础概念到高级特性的各种问题,涵盖了Java语言的多个方面。以下是一些可能包含在...
### JAVA笔试题目集合 在本篇文章中,我们将深入探讨一份详细的JAVA笔试题目集合中的关键知识点。这份资料包含了多个重要的JAVA概念和技术细节,非常适合用来准备JAVA相关的技术面试。 ### Servlet的生命周期及与...
在Java笔试题目中,这些知识点往往会被重点考察。让我们详细探讨一下标题和描述中提及的一些关键概念。 1. **访问修饰符的作用域** - `public`:任何地方都可以访问,无论是在同一包内还是不同包。 - `protected`...
### Java笔试知识点详解 #### 一、访问修饰符:public, private, ...综上所述,Java笔试题目覆盖了从基础概念到高级特性的广泛知识领域,深入理解这些知识点不仅有助于准备笔试,更是提升个人Java技能的关键。
Java笔试题目是企业在招聘IT专业人士时常常采用的一种筛选方式,尤其在Java开发领域,各大公司如腾讯、Google、百度、华为、中兴和网易等都设有相关的技术测试。这些题目通常涵盖Java语言基础、数据结构、算法、面向...