用友面试题java1、 Java的关键字都有哪些?
abstract | continue | for | new | switch
assert*** | default | goto* | package |
synchronized
boolean | do | if | private | this
break | ...
1、 Java的关键字都有哪些?
abstract | continue | for | new | switch
assert*** | default | goto* | package |
synchronized
boolean | do | if | private | this
break | double | implements | protected | throw
byte | else | import | public throws
case | enum**** | instanceof | return | transient
catch | extends | int | short | try
char | final | interface | static | void
class | finally | long | strictfp | volatile
const* | float | native | super |
while
一:transient 使用对象:属性
字段不是对象持久状态的一部分,不应该把字段和对象一起串起。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。当串行化某个对象时,如果该对象的某个变量是transient,那么这个变量不会被串行化进去。也就是说,假设某个类的成员变量是transient,那么当通过ObjectOutputStream把这个类的某个实例保存到磁盘上时,实际上 transient变量的值是不会保存的。
volatile 使用对象:属性
介绍:因为异步线程可以访问字段,所以有些优化操作是一定不能作用在字段上的。volatile有时
可以代替synchronized。
二: strictfp
使用对象:类、方法
自Java2以来,Java语言增加了一个关键字strictfp,虽然这个关键字在大多数场合比较少用,但是还是有必要了解一下。
strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时, Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了 strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。
你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码:
1. 合法的使用关键字strictfp
strictfp interface A {}
public strictfp class FpDemo1 {
strictfp void f() {}
}
2. 错误的使用方法
interface A {
strictfp void f();
}
public class FpDemo2 {
strictfp FpDemo2() {}
}
一旦使用了关键字strictfp来声明某个类、接口或者方法时,那么在这个关键字所声明的范围内所有浮点运算都是精确的,符合IEEE-754规范的。例如一个类被声明为strictfp,那么该类中所有的方法都是strictfp的。
Final考试大-全国最大教育类网站(www.Examda。com) 对与java中的final变量,java编译器是进行了优化的。每个使用了final类型变量的地方都不会通过连接而进行访问。比如说 Test类中使用了Data类中一个final的int数字fNumber=77,这时候,java编译器会将77这个常数编译到Test类的指令码或者常量池中。这样,每次Test类用到fNumber的时候,不会通过引用连接到Data类中进行读取,而是直接使用自己保存在类文件中的副本。
用程序说话:
C:/>javac Test.javaTest.java:
public class Test{
public static void main(String[] args){
System.out.println(Data.fNumber);
}
}
Data.java:
public class Data{
public static final int fNumber=77;
2、 java设计模式都有哪些?
MVC Factory Proxy Builder Singler 单例模式
作为对象的创建模式[GOF95], 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
单例模式的要点
显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。
一些资源管理器常常设计成单例模式。
在计算机系统中,需要管理的资源包括软件外部资源,譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler, 以避免两个打印作业同时输出到打印机中。每台计算机可以有若干传真卡,但是只应该有一个软件负责管理传真卡,以避免出现两份传真作业同时传到传真卡中的情况。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。
需要管理的资源包括软件内部资源,譬如,大多数的软件都有一个(甚至多个)属性(properties)文件存放系统配置。这样的系统应当由一个对象来管理一个属性文件。
需要管理的软件内部资源也包括譬如负责记录混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载网站来访人数的部件,记录软件系统内部事件、出错信息的部件,或是对系统的表现进行检查的部件等。这些部件都必须集中管理,不可政出多头。
这些资源管理器构件必须只有一个实例,这是其一;它们必须自行初始化,这是其二;允许整个系统访问自己这是其三。因此,它们都满足单例模式的条件,是单例模式的应用。
在java中,可以使用一下这种方式使用单例模式创建类的实例:
public class MyBean {
private static MyBean instance = null;
private MyBean(){
//do something
}
public static synchronized MyBean getInstance(){
if(instance == null){
instance = new MyBean();
}
return instance;
}
}
当一个类的实例可以有且只可以一个的时候就需要用到了。为什么只需要有一个呢?有人说是为了节约内存。本人对这个说法持保留态度。只有一个实例确实减少内存占用,可是我认为这不是使用单例模式的理由。我认为使用单例模式的时机是当实例存在多个会引起程序逻辑错误的时候。比如类似有序的号码生成器这样的东西,怎么可以允许一个应用上存在多个呢?
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有两种形式:
第一种形式: 也是常用的形式。
public class Singleton {
private static Singleton instance = null;
private Singleton(){
//do something
}
//这个方法比下面的有所改进,不用每次都进行生成对象,只是第一次使用时生成实例,提高了效率
public static Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
第二种形式:
public class Singleton {
//在自己内部定义自己的一个实例,只供内部调用
private static Singleton instance = new Singleton();
private Singleton(){
//do something
}
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance(){
return instance;
}
}
模式三:
public class Singleton {
private static class SingletonHolder {
static Singleton instance = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
}
3、 JAVA里面抽象类和接口的区别是什么?
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public,abstract 类型的。
结论
abstract class 和 interface 是 Java语言中的两种定义抽象类的方式,它们之间有很大的相似性。但是对于它们的选择却又往往反映出对于问题快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题领域中的概念本质的理解、对于设计意图的反映是否正确、合理,因为它们表现了概念间的不同的关系(虽然都能够实现需求的功能)。这其实也是语言的一种的惯用法,希望读者朋友能够细细体会。
4、 JAVA中有几种方法可以实现一个线程?用什么关键字修饰同步方法?
5、 JavaScript中,通过什么方法来判断String 对象内第一次出现子字符串的字符位置?
6、 如何创建数组?通过什么方法来进行数字计算?通过什么方法来截取String对象字符串?
7、 通过什么方法来分割字符串?split
8、 如何循环select并使之选中?如何填加、删除、修改option数据?如何进行两个select之间联动?iframe之间如何调用?
dd html中,如何如何创建一个下拉列表?如何创建一个文本输入框?,type都有哪些类型?onMouseOver、onMouseOut、onKeyPress、onKeyDown、onScroll、onLoad、onClick、onBlur、onFocus、onReset等等事件的含义?
jsp传值方式有哪些?如何动态引用jsp页面
9、 执行数据库查询时,如果需要查询数据很多,假设有1亿条,用什么方法提高查询效率(速度)?
查的数据很多 但是显示在页面上的只能是一部分 所以分页是一个办法
还有就是缓存
还有可以做oracle的索引
10、 插入、更新、删除数据,各举一例
Insert into a vlaues(1,’d’,’dd’)
Delete form a where id=**
Update dept set deptname=’dd’ where id=’’
11、 not in和not exists的用法各举一例?在开发中推荐使用哪种?
IN 关键字使您得以选择与列表中的任意一个值匹配的行。
当要获得居住在 California、Indiana 或 Maryland 州的所有作者的姓名和州的列表时,就需要下列查询:
SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID = 1 OR CategoryID = 4 OR CategoryID = 5
然而,如果使用 IN,少键入一些字符也可以得到同样的结果:
SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID IN (1, 4, 5)
IN 关键字之后的项目必须用逗号隔开,并且括在括号中。
下列查询在 titleauthor 表中查找在任一种书中得到的版税少于 50% 的所有作者的 au_id,然后从 authors 表中选择 au_id 与
titleauthor 查询结果匹配的所有作者的姓名:
SELECT au_lname, au_fname FROM authors WHERE au_id IN (SELECT au_id FROM titleauthor WHERE royaltyper < 50)
结果显示有一些作者属于少于 50% 的一类。
NOT IN:通过 NOT IN 关键字引入的子查询也返回一列零值或更多值。
以下查询查找没有出版过商业书籍的出版商的名称。
SELECT pub_name FROM publishers WHERE pub_id NOT IN (SELECT pub_id FROM titles WHERE type = 'business')
使用 EXISTS 和 NOT EXISTS 引入的子查询可用于两种集合原理的操作:交集与差集。两个集合的交集包含同时属于两个原集合的所有元素。
差集包含只属于两个集合中的第一个集合的元素。
EXISTS:指定一个子查询,检测工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训行的存在。
本示例所示查询查找由位于以字母 B 开头的城市中的任一出版商出版的书名:
SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type =
'business')
SELECT distinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titles WHERE type = 'business')
两者的区别:
EXISTS:后面可以是整句的查询语句如:SELECT * FROM titles
IN:后面只能是对单列:SELECT pub_id FROM titles
NOT EXISTS:
例如,要查找不出版商业书籍的出版商的名称:
SELECT pub_name FROM publishers WHERE NOT EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type =
'business')
下面的查询查找已经不销售的书的名称:
SELECT title FROM titles WHERE NOT EXISTS (SELECT title_id FROM sales WHERE title_id = titles.title_id)
下面是最近项目的经验班主任工作经验交流宣传工作经验交流材料优秀班主任经验交流小学课改经验典型材料房地产总经理管理经验总结:
如要从客户资金表(Cfunds )中获取每个用户最新的一条资金情况,则在这个时候not exists 显得尤为有用,可以省掉你去写一大堆子查询、Group By、In的麻烦
这个是表:
HYPERLINK "http://img.bimg.126.net/photo/iE6I2gXeDJX3Qd401qtzSA==/285134151408579219.jpg" \t "_blank"
Select * From Cfunds a Where Not exists(Select * From Cfunds Where CAccount=a.CAccount And Counttime >a.CountTime)
order by CountTime Desc
12、 左外连接,右外连接,全连接,内连接 四种连接的通用写法及差异?
SQL 左外连接,右外连接,全连接,内连接
2008-10-29 23:10
联接条件可在 FROM 或 WHERE 子句中指定,建议在 FROM 子句中指定联接条件。WHERE 和 HAVING 子句也可以包含搜索条件,以进一步筛选联接条件所选的行。
联接可分为以下几类:
(一)内连接
内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。
内连接分三种:
1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
使用等值连接,,在选择列表中列出LandTbl和TownTbl表中重复列(TownCode):
例:Select * from LandTbl as A inner join TownTbl as B on A.TownCode=B.TownCode
2、不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。
这些运算符包括>、>=、<=、<、!>、!<和<>。
例:Select * from LandTbl as A inner join TownTbl as B on A.TownCode<>B.TownCode
3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
使用自然连接,在选择列表中删除LandTbl和TownTbl表中重复列(TownCode):
Select A.*, B.CityCode, B.TownName from LandTbl as A inner join TownTbl as B on A.TownCode=B.TownCode
(二)外联接
外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:
LEFT JOIN 或 LEFT OUTER JOIN。
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
FULL JOIN 或 FULL OUTER JOIN。
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
(三)交叉联接
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
例如,下面的内联接检索与某个出版商居住在相同州和城市的作者:
USE pubs
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors AS a INNER JOIN publishers AS p
ON a.city = p.city
AND a.state = p.state
ORDER BY a.au_lname ASC, a.au_fname ASC
FROM 子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关使用左或右向外联接排列表的更多信息,请参见使用外联接。
例子:
a表 id name b表 id job parent_id
1 张3 1 23 1
2 李四 2 34 2
3 王武 3 34 4
a.id同parent_id 存在关系
内连接
select a.*,b.* from a inner join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
左连接
select a.*,b.* from a left join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
3 王武 null null null
右连接
select a.*,b.* from a right join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
null null 3 34 4
完全连接
select a.*,b.* from a full join b on a.id=b.parent_id
结果是
1 张3 1 23 1
2 李四 2 34 2
null null 3 34 4
3 王武 null null null
13、 请解释MVC模式?structs都有哪些标签库?在页面中如何引用?
16、请介绍简单介绍spring?
17、eclipse都有哪些常用的快捷键及说明?eclipse如何不需要打断点却在抛异常时自动断住?
eclipse插件有哪几种引用方式?
18、综合
下列哪种说法是正确的?
A、在一个子类中一个方法不是public的就不能被重载
B、覆盖一个方法只需要满足相同的方法名和参数类型就可以了
C、覆盖一个方法必需要满足相同的方法名参数和返回类型
D、一个覆盖的方法必需有相同的方法名,参数名和参数类型
答案:解析:
对于在同一可访问区内被声明的几个具有不同参数列(参数的类型、个数、顺序不同)的同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制叫重载,重载不关心函数的返回值类型。覆盖是指派生类中存在重新定义的函数,其函数名、参数列、返回值类型必须同父类中的相对应被覆盖的函数严格一致,覆盖函数和被覆盖函数只有函数体(花括号中的部分)不同,当派生类对象调用子类中该同名函数时会自动调用子类中的覆盖版本,而不是父类中的被覆盖函数版本,这种机制就叫做覆盖。
成员函数被重载的特征如下。
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual关键字可有可无。
覆盖的特征如下。
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual关键字。
答案:C
19 在List.Map.Set 等接口中,不能包含重复元素的接口是:
A、List B、Map C、Set D、都不是 答案 c
20 给定下面的字符串定义:
String s = “Story”;
下面那个表达式是合理的?
A、S+=5; B:Char =s[1];C int len=s.lenght;D:String t=s.toLowCase;
21、下面程序会执行出错误吗?如果有错误是什么错误?
public class Modify {
public static void main(String[] args){
String I = “123”,s;
S = getStr(i);
System.out.println(s);
}
public String getStr(String s){
StringBuffer sb = new StringBuffer();
for(int i=s.length-1;i>=0;i--){
sb.append(s.charAt(i));
}
return sb.toString();
}
22 便于静态变量的创建,哪一个选项是正确的?
A、一旦一个静态变量被创建,它就不允许改变
B、一个静态变量在一个方法中创建,他在被调用的时候值保持不变
C、在任意多个类的实例中,一个静态变量的实例只存在一个
D、一个静态的标识符只能应用于 private value
23、给定下列参数t,它继承了一个线程类,下列哪些选项可以使该线程停止执行,让其他的线程开始执行?
A t.yield() B、Thread.yield() C、yield(100) D、yield(t)
关于下面类的定义,以下哪种说法是正确的?
public class Modify {
class one {
private class two {
public void main (){
System.out.println(“two”);
}
}
}
}
A、此代码不能编译通过,因为该类嵌套了不至一层
B、此代码不能编译通过,并且运行时输出字符串 two
C、此代码可以编译通过,
D、次代码编译没有错误
对于如下代码,以下哪个结论是正确的?
public class Modify {
public static void main (String [] args) {
StringBuffer a = new StringBuffer (“A”);
StringBuffer b = new StringBuffer (“B”);
operate (a,b);
system.out.printIn{a “,” b};
}
static void operate (StringBuffer x, StringBuffer y) {
x.append (y);
y = x;
}
}
A. The code compiles and prints “A,B”.
B. The code compiles and prints “A,A”.
C. The code compiles and prints “B,B”.
D. The code compiles and prints “AB,B”.
以下创建了几个对象?
String A,B,C;
A = ”a”;
B = “b”;
C = “c”;
StringBuffer d = new StringBuffer(“abc”);
D = D.append(“567”);
A.3 B.4 C.5 D.6
考虑以下代码:
public class Modify{
public static void main(String[] args){
int I,j,k;
i=100;;
while(i>0){
j=i*2;
System.out.println(“The value of j is”+j);
k=k+1;
i--;
}
}
}
以下哪个表达式是不正确的?
A、1 B、 2 C、 3 D、4
请看如下代码
Image[] img = new Image[10];
for(int i=0;i