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