用友Java開發(fā)工程師筆試題
1、 Java的關(guān)鍵字都有哪些?
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 使用對象:屬性
字段不是對象持久狀態(tài)的一部分,不應(yīng)該把字段和對象一起串起。當(dāng)一個(gè)對象被串行化的時(shí)候,transient型變量的值不包括在串行化的表示中,然而非transient型的變量是被包括進(jìn)去的。當(dāng)串行化某個(gè)對象時(shí),如果該對象的某個(gè)變量是transient,那么這個(gè)變量不會(huì)被串行化進(jìn)去。也就是說,假設(shè)某個(gè)類的成員變量是transient,那么當(dāng)通過ObjectOutputStream把這個(gè)類的某個(gè)實(shí)例保存到磁盤上時(shí),實(shí)際上 transient變量的值是不會(huì)保存的。
volatile 使用對象:屬性
介紹:因?yàn)楫惒骄程可以訪問字段,所以有些優(yōu)化操作是一定不能作用在字段上的。volatile有時(shí)
可以代替synchronized。
二: strictfp
使用對象:類、方法
自Java2以來,Java語言增加了一個(gè)關(guān)鍵字strictfp,雖然這個(gè)關(guān)鍵字在大多數(shù)場合比較少用,但是還是有必要了解一下。
strictfp的意思是FP-strict,也就是說精確浮點(diǎn)的意思。在Java虛擬機(jī)進(jìn)行浮點(diǎn)運(yùn)算時(shí),如果沒有指定strictfp關(guān)鍵字時(shí), Java的編譯器以及運(yùn)行環(huán)境在對浮點(diǎn)運(yùn)算的表達(dá)式是采取一種近似于我行我素的行為來完成這些操作,以致于得到的結(jié)果往往無法令你滿意。而一旦使用了 strictfp來聲明一個(gè)類、接口或者方法時(shí),那么所聲明的范圍內(nèi)Java的編譯器以及運(yùn)行環(huán)境會(huì)完全依照浮點(diǎn)規(guī)范IEEE-754來執(zhí)行。因此如果你想讓你的浮點(diǎn)運(yùn)算更加精確,而且不會(huì)因?yàn)椴煌挠布脚_(tái)所執(zhí)行的結(jié)果不一致的話,那就請用關(guān)鍵字strictfp。
你可以將一個(gè)類、接口以及方法聲明為strictfp,但是不允許對接口中的方法以及構(gòu)造函數(shù)聲明strictfp關(guān)鍵字,例如下面的'代碼:
1. 合法的使用關(guān)鍵字strictfp
strictfp interface A {}
public strictfp class FpDemo1 {
strictfp void f() {}
}
2. 錯(cuò)誤的使用方法
interface A {
strictfp void f();
}
public class FpDemo2 {
strictfp FpDemo2() {}
}
一旦使用了關(guān)鍵字strictfp來聲明某個(gè)類、接口或者方法時(shí),那么在這個(gè)關(guān)鍵字所聲明的范圍內(nèi)所有浮點(diǎn)運(yùn)算都是精確的,符合IEEE-754規(guī)范的。例如一個(gè)類被聲明為strictfp,那么該類中所有的方法都是strictfp的。
Final考試大-全國最大教育類網(wǎng)站(www.Examda。com) 對與java中的final變量,java編譯器是進(jìn)行了優(yōu)化的。每個(gè)使用了final類型變量的地方都不會(huì)通過連接而進(jìn)行訪問。比如說 Test類中使用了Data類中一個(gè)final的int數(shù)字fNumber=77,這時(shí)候,java編譯器會(huì)將77這個(gè)常數(shù)編譯到Test類的指令碼或者常量池中。這樣,每次Test類用到fNumber的時(shí)候,不會(huì)通過引用連接到Data類中進(jìn)行讀取,而是直接使用自己保存在類文件中的副本。
用程序說話:
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設(shè)計(jì)模式都有哪些?
MVC Factory Proxy Builder Singler 單例模式
作為對象的創(chuàng)建模式[GOF95], 單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。這個(gè)類稱為單例類。
單例模式的要點(diǎn)
顯然單例模式的要點(diǎn)有三個(gè);一是某個(gè)類只能有一個(gè)實(shí)例;二是它必須自行創(chuàng)建這個(gè)實(shí)例;三是它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。在下面的對象圖中,有一個(gè)”單例對象”,而”客戶甲”、”客戶乙” 和”客戶丙”是單例對象的三個(gè)客戶對象?梢钥吹,所有的客戶對象共享一個(gè)單例對象。而且從單例對象到自身的連接線可以看出,單例對象持有對自己的引用。
一些資源管理器常常設(shè)計(jì)成單例模式。
在計(jì)算機(jī)系統(tǒng)中,需要管理的資源包括軟件外部資源,譬如每臺(tái)計(jì)算機(jī)可以有若干個(gè)打印機(jī),但只能有一個(gè)Printer Spooler, 以避免兩個(gè)打印作業(yè)同時(shí)輸出到打印機(jī)中。每臺(tái)計(jì)算機(jī)可以有若干傳真卡,但是只應(yīng)該有一個(gè)軟件負(fù)責(zé)管理傳真卡,以避免出現(xiàn)兩份傳真作業(yè)同時(shí)傳到傳真卡中的情況。每臺(tái)計(jì)算機(jī)可以有若干通信端口,系統(tǒng)應(yīng)當(dāng)集中管理這些通信端口,以避免一個(gè)通信端口同時(shí)被兩個(gè)請求同時(shí)調(diào)用。
需要管理的資源包括軟件內(nèi)部資源,譬如,大多數(shù)的軟件都有一個(gè)(甚至多個(gè))屬性(properties)文件存放系統(tǒng)配置。這樣的系統(tǒng)應(yīng)當(dāng)由一個(gè)對象來管理一個(gè)屬性文件。
需要管理的軟件內(nèi)部資源也包括譬如負(fù)責(zé)記錄網(wǎng)站來訪人數(shù)的部件,記錄軟件系統(tǒng)內(nèi)部事件、出錯(cuò)信息的部件,或是對系統(tǒng)的表現(xiàn)進(jìn)行檢查的部件等。這些部件都必須集中管理,不可政出多頭。
這些資源管理器構(gòu)件必須只有一個(gè)實(shí)例,這是其一;它們必須自行初始化,這是其二;允許整個(gè)系統(tǒng)訪問自己這是其三。因此,它們都滿足單例模式的條件,是單例模式的應(yīng)用。
在java中,可以使用一下這種方式使用單例模式創(chuàng)建類的實(shí)例:
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;
}
}
當(dāng)一個(gè)類的實(shí)例可以有且只可以一個(gè)的時(shí)候就需要用到了。為什么只需要有一個(gè)呢?有人說是為了節(jié)約內(nèi)存。本人對這個(gè)說法持保留態(tài)度。只有一個(gè)實(shí)例確實(shí)減少內(nèi)存占用,可是我認(rèn)為這不是使用單例模式的理由。我認(rèn)為使用單例模式的時(shí)機(jī)是當(dāng)實(shí)例存在多個(gè)會(huì)引起程序邏輯錯(cuò)誤的時(shí)候。比如類似有序的號碼生成器這樣的東西,怎么可以允許一個(gè)應(yīng)用上存在多個(gè)呢?
Singleton模式主要作用是保證在Java應(yīng)用程序中,一個(gè)類Class只有一個(gè)實(shí)例存在。
一般Singleton模式通常有兩種形式:
第一種形式: 也是常用的形式。
public class Singleton {
private static Singleton instance = null;
private Singleton(){
//do something
}
//這個(gè)方法比下面的有所改進(jìn),不用每次都進(jìn)行生成對象,只是第一次使用時(shí)生成實(shí)例,提高了效率
public static Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
第二種形式:
public class Singleton {
//在自己內(nèi)部定義自己的一個(gè)實(shí)例,只供內(nèi)部調(diào)用
private static Singleton instance = new Singleton();
private Singleton(){
//do something
}
//這里提供了一個(gè)供外部訪問本class的靜態(tài)方法,可以直接訪問
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里面抽象類和接口的區(qū)別是什么?
1.abstract class 在 Java 語言中表示的是一種繼承關(guān)系,一個(gè)類只能使用一次繼承關(guān)系。但是,一個(gè)類卻可以實(shí)現(xiàn)多個(gè)interface。
2.在abstract class 中可以有自己的數(shù)據(jù)成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員(也就是必須是static final的,不過在 interface中一般不定義數(shù)據(jù)成員),所有的成員方法都是abstract的。
3.abstract class和interface所反映出的設(shè)計(jì)理念不同。其實(shí)abstract class表示的是”is-a”關(guān)系,interface表示的是”like-a”關(guān)系。
4.實(shí)現(xiàn)抽象類和接口的類必須實(shí)現(xiàn)其中的所有方法。抽象類中可以有非抽象方法。接口中則不能有實(shí)現(xiàn)方法。
5.接口中定義的變量默認(rèn)是public static final 型,且必須給其初值,所以實(shí)現(xiàn)類中不能重新定義,也不能改變其值。
6.抽象類中的變量默認(rèn)是 friendly 型,其值可以在子類中重新定義,也可以重新賦值。
7.接口中的方法默認(rèn)都是 public,abstract 類型的。
結(jié)論
abstract class 和 interface 是 Java語言中的兩種定義抽象類的方式,它們之間有很大的相似性。但是對于它們的選擇卻又往往反映出對于問題領(lǐng)域中的概念本質(zhì)的理解、對于設(shè)計(jì)意圖的反映是否正確、合理,因?yàn)樗鼈儽憩F(xiàn)了概念間的不同的關(guān)系(雖然都能夠?qū)崿F(xiàn)需求的功能)。這其實(shí)也是語言的一種的慣用法,希望讀者朋友能夠細(xì)細(xì)體會(huì)。
4、 JAVA中有幾種方法可以實(shí)現(xiàn)一個(gè)線程?用什么關(guān)鍵字修飾同步方法?
5、 JavaScript中,通過什么方法來判斷String 對象內(nèi)第一次出現(xiàn)子字符串的字符位置?
6、 如何創(chuàng)建數(shù)組?通過什么方法來進(jìn)行數(shù)字計(jì)算?通過什么方法來截取String對象字符串?
7、 通過什么方法來分割字符串?split
8、 如何循環(huán)select并使之選中?如何填加、刪除、修改option數(shù)據(jù)?如何進(jìn)行兩個(gè)select之間聯(lián)動(dòng)?iframe之間如何調(diào)用?
9、
dd html中,如何如何創(chuàng)建一個(gè)下拉列表?如何創(chuàng)建一個(gè)文本輸入框?,type都有哪些類型?onMouseOver、onMouseOut、onKeyPress、onKeyDown、onScroll、onLoad、onClick、onBlur、onFocus、onReset等等事件的含義?
10、
jsp傳值方式有哪些?如何動(dòng)態(tài)引用jsp頁面
11、 執(zhí)行數(shù)據(jù)庫查詢時(shí),如果需要查詢數(shù)據(jù)很多,假設(shè)有1億條,用什么方法提高查詢效率(速度)?
查的數(shù)據(jù)很多 但是顯示在頁面上的只能是一部分 所以分頁是一個(gè)辦法
還有就是緩存
還有可以做oracle的索引
【用友Java開發(fā)工程師筆試題】相關(guān)文章:
軟件開發(fā)工程師JAVA筆試題10-15
Java軟件開發(fā)工程師筆試題寶典10-15
潤信Java開發(fā)工程師面試題11-20
方正集團(tuán)Java開發(fā)工程師筆試題目11-14
中興Java Web開發(fā)工程師筆試題及答案11-16
Java中級開發(fā)工程師筆試題及答案201609-11
JAVA開發(fā)工程師崗位介紹08-09