用友java面試題
1. java面試題求大神幫忙,給滿分100分
1: D | javac 命令編譯指定類和該類依賴的類。編譯後的文件為二進制文件class
2:C
3:B
4:C | IOException,runtimeException 編譯時不要求強行處理,只在運行期發生。IOException編譯時強行要求處理,繼承自Exception
5:B | Set無序隊列,用get(index)游標無法獲取
6:C
7:A | 不使用關鍵字相當於default
8:D | 二進制演算法 11為 111 | 10 = 111(只要有一個是1就是1) 也就是11
9: C | ''表示位元組char。"/u0020" 是Unico的空格編碼
10:B
三
1、publicstaticObject[]arraySubtract(Object[]array1,Object[]array2){
ArrayList<Object>list=newArrayList<Object>();
//選出屬於數組1但不屬於數組2的元素
for(inti=0;i<array1.length;++i){
booleanbContained=false;
for(intj=0;j<array2.length;++j){
if(array1[i].equals(array2[j])){
bContained=true;
break;
}
}
if(!bContained){
list.add(array1[i]);
}
}
Objectres[]=newObject[list.size()];
for(inti=0;i<list.size();++i)
res[i]=list.get(i);
returnres;
}
2、
intcount(intn)
{
intresult=0;
for(inti=1;i<n;i++)
{
result+=i;
}
returnresult;
}
3、select*fromAwherenamein((name)>1)
2. java開發面試題
結果如下,寫的有些復雜了
privatestaticList<Tray>mergeTrays(List<Tray>list){
Map<Integer,List<Goods>>trayMap=newHashMap<>();
List<Tray>newTray=newArrayList<>();
for(Traytray:list){
intid=tray.id;
List<Goods>goods=tray.goods;
if(trayMap.containsKey(id)){
//將相同托盤id的商品放在一起
List<Goods>tempGoods=trayMap.get(id);
for(inti=0;i<goods.size();i++){
tempGoods.add(goods.get(i));
}
trayMap.put(id,tempGoods);
}else{
trayMap.put(id,goods);
}
}
for(Map.Entry<Integer,List<Goods>>entry:trayMap.entrySet()){
intid=entry.getKey();
List<Goods>goods=entry.getValue();
Map<Integer,Integer>goodsMap=newHashMap<>();
for(inti=0;i<goods.size();i++){
Goodsgood=goods.get(i);
if(goodsMap.containsKey(good.id)){
goodsMap.put(good.id,goodsMap.get(good.id)+good.count);
}else{
goodsMap.put(good.id,good.count);
}
}
List<Goods>newGoods=newArrayList<>();
for(Map.Entry<Integer,Integer>goodEntry:goodsMap.entrySet()){
Goodsgood=newGoods();
good.id=goodEntry.getKey();
good.count=goodEntry.getValue();
newGoods.add(good);
}
Traytray=newTray();
tray.id=id;
tray.goods=newGoods;
newTray.add(tray);
}
returnnewTray;
}
3. JAVA面試題如下:
完成了,代碼如下,你自己運行一下,看下結果是否正確:
import java.util.Random;
public class Test
{
static int[] temp = new int[100];
public static void generateRandom() //生成隨機數
{
for(int i=0;i<100;i++)
temp[i] = i+1;
Random r = new Random();
int del = r.nextInt(100);
for(int i=del;i<99;i++)
temp[i] = temp[i+1];
for(int i=0;i<99;i++)
{
int r1 = r.nextInt(99);
int r2 = r.nextInt(99);
if(r1 == r2) continue;
temp[r1] += temp[r2];
temp[r2] = temp[r1] - temp[r2];
temp[r1] = temp[r1] - temp[r2];
}
System.out.println("數組中的數據如下:");
for(int i=0;i<99;i++)
System.out.print(temp[i] + " ");
System.out.println();
}
public static void main(String[] args)
{
generateRandom();
int sum1 = 0 , sum2 = 0;
for(int i=1;i<=100;i++)
sum1 += i;
for(int i=0;i<99;i++)
sum2 += temp[i];
System.out.println("數組中缺少的是那個自然數是" + (sum1 - sum2));
}
}
4. JAVA面試題,大家幫忙看一下。謝謝
。。。。。看不懂
5. 有誰去過北京用友軟體面試過嗎,面試題是什麼
哪個職位哇?我看到卧龍閣有人分享了面經,找了一些:
職位:JAVA工程師
問題: 1、什麼是Cookie? 我簡單回答了一下。然後就是Session與Application的區別,我還跟他詳細講了Asp.Net中session的原理,並講了Session是怎麼通過Cookie存儲SessionId來達到唯一確定一個訪問者的。
2、Nhibernate下Session到底是什麼東西?問我是怎麼理解的。其實一直在用這個東西,Session其實是一個邊界,簡單談了一下我自己的理解。面試官比較認可!
3、項目中資料庫優化和程序優化的經驗?簡單談了一下資料庫的優化幾個點:索引,分區等;後來歸結到索引上,問到什麼情況下加索引,索引加到什麼列上?當然是索引要加到不是經常更新修改和刪除的表上比較合適,因為表的更新意味索引同步更新,所以表如果是經常更新的話,最好不要添加索引。索引一般加到Where語句後面經常出現的列,當然要根據列的類型和實際情況添加相應的索引,還要注意的是避免使用類似於like 「%word%」或者是隱式類型轉換或者函數造成的索引失效。後來又談了點程序中優化的例子,比如數據的批量操作共用一個連接,共用一個Commend,連接只打開一次【尤其是強類型Dataset自動生成的insert和update方法】等等,又談到了連接池...
職位:軟體工程師
問題:面試分為兩個環節,首先是筆試,三頁紙的試題,用了大概50分鍾的時間。最後一個是數據SQL語句的考察問題,雖然我對SQL語句比較熟悉(以前維護過的ERP軟體系統,幾乎每個SQL語句都有2頁紙),但是這個題目還是沒有取得高分。還有就是一些理論知識,如何落實到試卷上,還得有點記憶力。總之筆試僅僅得了62分 。實際上我自己對面試結果並不滿意.我熟悉的struts+hibernate+spring相關知識沒有問到,但是對oracle資料庫與java基礎卻問了不少!總體來說,面試考察的面比較廣,既包括技術方面的也包括業務方面的.技術方面主要包括:
java基本知識、編程模式、j2ee規范、數據查詢以及oracle的一些特性。業務方面主要考察HR 方面的基本業務(因為我面試的是HR模塊的java工程師)。筆試之後是面試,技術與業務經理同時來面試。java知識我還是比較熟悉的(畢竟我還曾經作為老師給新員工培訓過java基礎),但是oracle的一些東東我就不太熟悉了(資料庫的問題回答的是一塌糊塗)。業務知識自我感覺也不太理想。最後談了一些薪資待遇方面的問題,
6. java面試題
第一題,用一個ArrayList存儲1到100
然後隨機產生0到arraylist.size()之間的數字作為下標
然後從arraylist中remove掉剛產生的那個下標的數存到數組中,直到arraylist中的size為0即可,這樣就不用去判斷浪費大量時間,用set的話雖然表面上沒做判斷,實際上也是判斷過的
public class Rand {
public static void main(String[] args) {
int[] fill = new int[100];
List<Integer> list = new ArrayList<Integer>();
for(int i=1; i<=100; i++) {
list.add(i);
}
Random random = new Random();
for(int i=0; i<fill.length; i++) {
fill[i] = list.remove(random.nextInt(list.size()));
}
for(int i=0; i<fill.length; i++) {
System.out.print(fill[i] + " ");
}
}
}
第二題可以考慮RandomAccessFile類
其他類也有追加的方法好像,構造方法中有一個參數問是不是需要追加
7. java面試題!
int 是基本數據類型 integer是整形數據類,可以生成實例,通過其中的一個***方法(我忘了)可以從數據串中提取一個整形數據.
ERROR是源於JAVA或其編譯器或平台自身的異常,是PROGRAMMER無法捕獲的,也不需要去對他進行處理.EXCRPTION是PROGRAMMER常要用到的,你可以對他進行捕獲引發或其他處理.
說的不準確,大概就是這個意思吧.
就知道這些,其他的不知道了.
請問兄弟應聘什麼工作.
8. java面試題有哪些常見的啊
第一,談談final, finally, finalize的區別。
最常被問到。
第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)?
第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。
第四,&和&&的區別。
這個問得很少。
第五,HashMap和Hashtable的區別。
常問。
第六,Collection 和 Collections的區別。
你千萬別說一個是單數一個是復數。
第七,什麼時候用assert。
API級的技術人員有可能會問這個。
第八,GC是什麼? 為什麼要有GC?
基礎。
第九,String s = new String("xyz");創建了幾個String Object?
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
第十一,short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
面試題都是很變態的,要做好受虐的准備。
第十二,sleep() 和 wait() 有什麼區別?
搞線程的最愛。
第十三,Java有沒有goto?
很十三的問題,如果哪個面試的問到這個問題,我勸你還是別進這家公司。
第十四,數組有沒有length()這個方法? String有沒有length()這個方法?
第十五,Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
常問。
第十六,Set里的元素是不能重復的,那麼用什麼方法來區分重復與否呢? 是用==還是equals()? 它們有何區別?
第十七,給我一個你最常見到的runtime exception。
如果你這個答不出來,面試的人會認為你沒有實際編程經驗。
第十八,error和exception有什麼區別?
第十九,List, Set, Map是否繼承自Collection介面?
第二十,abstract class和interface有什麼區別?
常問。
第二十一,abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
第二十二,介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)?
第二十三,啟動一個線程是用run()還是start()?
第二十四,構造器Constructor是否可被override?
第二十五,是否可以繼承String類?
第二十六,當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
第二十七,try {}里有一個return語句,那麼緊跟在這個try後的finally {}里的code會不會被執行,什麼時候被執行,在return前還是後?
第二十八,編程題: 用最有效率的方法算出2乘以8等於幾?
有C背景的程序員特別喜歡問這種問題。
第二十九,兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
第三十,當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這里到底是值傳遞還是引用傳遞?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,編程題: 寫一個Singleton出來。
好先說這么一些。
答:
第一,談談final, finally, finalize的區別。
final—修飾符(關鍵字)如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變數或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變數必須在聲明時給定初值,而在以後的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。
finally—再異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的 catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)。
finalize—方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。
第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)?
匿名的內部類是沒有名字的內部類。不能extends(繼承) 其它類,但一個內部類可以作為一個介面,由另一個內部類實現。
第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。
Nested Class (一般是C++的說法),Inner Class (一般是JAVA的說法)。Java內部類與C++嵌套類最大的不同就在於是否有指向外部的引用上。具體可見 http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
註: 靜態內部類(Inner Class)意味著1創建一個static內部類的對象,不需要一個外部類對象,2不能從一個static內部類的一個對象訪問一個外部類對象
第四,&和&&的區別。
&是位運算符。&&是布爾邏輯運算符。
第五,HashMap和Hashtable的區別。
都屬於Map介面的類,實現了將惟一鍵映射到特定的值上。
HashMap 類沒有分類或者排序。它允許一個 null 鍵和多個 null 值。
Hashtable 類似於 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因為它是同步的。
第六,Collection 和 Collections的區別。
Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。
Collection是個java.util下的介面,它是各種集合結構的父介面。第七,什麼時候用assert。
斷言是一個包含布爾表達式的語句,在執行這個語句時假定該表達式為 true。如果表達式計算為 false,那麼系統會報告一個 Assertionerror。它用於調試目的:
assert(a > 0); // throws an Assertionerror if a <= 0
斷言可以有兩種形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 應該總是產生一個布爾值。
Expression2 可以是得出一個值的任意表達式。這個值用於生成顯示更多調試信息的 String 消息。
斷言在默認情況下是禁用的。要在編譯時啟用斷言,需要使用 source 1.4 標記:
javac -source 1.4 Test.java
要在運行時啟用斷言,可使用 -enableassertions 或者 -ea 標記。
要在運行時選擇禁用斷言,可使用 -da 或者 -disableassertions 標記。
要系統類中啟用斷言,可使用 -esa 或者 -dsa 標記。還可以在包的基礎上啟用或者禁用斷言。
可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用於驗證傳遞給私有方法的參數。不過,斷言不應該用於驗證傳遞給公有方法的參數,因為不管是否啟用了斷言,公有方法都必須檢查其參數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試後置條件。另外,斷言不應該以任何方式改變程序的狀態。
第八,GC是什麼? 為什麼要有GC? (基礎)。
GC是垃圾收集器。Java 程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String("xyz");創建了幾個String Object?
兩個對象,一個是「xyx」,一個是指向「xyx」的引用對象s。
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
9. java面試題 大蝦們請進
1.Map介面在JDK中有兩個實現,HashMap和HashTable。HashMap可以使用null值的鍵,HashTable不能使用空值的鍵,但是value都可以是空。
Map map = new HashMap();
map.put(null,null);//可以鍵和值都為空。但是只能添加一個為null的鍵
2.排序和遍歷和調用不調用remove方法沒關系。排序可以通過Collections下的sort方法排序,遍歷可以通過for循環或者Iterator迭代器遍歷。
List list = new ArrayList();
list.add(8);
list.add(5);
list.add(12);
list.add(3);
list.remove(12);//刪除12這個元素
Collections.sort(list);//對集合排序
for(Integer num:list)
{
System.out.println(num);
}
3.JSP會被容器,在第一個請求時轉換為Servlet,所以本質上JSP和Servlet沒有區別。但是,在表現形式上有區別:
a.JSP是HTML、CSS等靜態頁面技術和Java腳本代碼組成的,以文本方式存在。而Servlet是程序,不是文本。
b.Servlet需要編譯成class後才能部署到容器中,而JSP以源文本文件形式部署到容器中。
c.客戶端通過JSP文件名對JSP發送訪問請求,而Servlet需要在web.xml中描述其URI地址,並且客戶端必須通過配置好的地址才能訪問到Servlet,而不是通過Servlet的文件名訪問。
10. 面試JAVA程序員最基本的面試題有哪些
java異常機制的原理與應用
答:每當程序出現異常之後,如果程序沒有進行相應的處理,則程序會出現中斷現象。
實際上,產生了異常之後,JVM會拋出一個異常類的實例化對象,如果此時使用了try語句捕獲的話,則可以進行異常的處理,否則,交給JVM進行處理。當try語句捕獲異常之後,將與catch語句的異常類型進行匹配,如果匹配成功則執行catch內的語句。簡單的應用:在所以throws語句的地方加入try-catch。標准應用:try-catch-finally-throw-throws一起使用。
2. 垃圾回收機制的優點
答:釋放無用的對象所佔用的空間。方式:自動回收,手動回收。使用System.gc(),實際上調用Runtime.getRuntime().gc()
3. Error與Exception區別
答:Error是jvm進行處理,是jvm出錯
exception是可以由程序處理的,可以用try-catch捕獲的
4. final,finally,finallize
答:final定義的變數的值不能改變,定義的方法不能被覆蓋,定義的類不能被繼承
finally是異常的統一出口,finallize是垃圾回收前的收尾工作,是Object類定義的
5. Anonymous Inner Class是否可以extends,是否可以implements Interface
答:允許繼承和實現,因為匿名內部類就是在抽象類和介面的基礎上發展起來的
6. Static Nested Class 與Inner Class的區別
答:使用Static定義的Class就是外部類,可以通過外部類. 內部類直接訪問
而Inner Class是不能被外部訪問的,只能通過外部類的實例再找到內部類實例。
7. HashMap and HashTable?
答:HashMap:1) released in jdk 1.2,new Class 2)採用非同步處理方式,性能較高,是非線程安全的 3)允許null
HashTable:1)released in jdk 1.0 ,old Class 2)採用同步處理方式,性能低,是線程安全的3)不允許null
8. assert代表什麼?
答:asserts是jdk 1.4之後發布的新關鍵字,表示斷言,即程序執行到某個地方肯定是預計的值,一般開發很少使用。要使用assert,必須加上 -ea參數
9. gc是什麼?
答:gc是garbage collection,垃圾回收,使用gc可以進行垃圾空間的釋放
10. String s = new String("xyz")產生了幾個對象?
答:一個匿名對象xyz,在棧空間內。一個new實例化的對象,在堆空間內。
11. sleep() and wait()?
答:sleep()是Thread類定義方法,表示線程的休眠,可以自動喚醒
wait()方法是Object類定義的方法,需要手動notify()和notifyAll()//sleep()不釋放資源,wait()釋放資源
12. java中存在goto,但不能使用
13.數組有沒有length(),String有沒有length()?
答:數組有length屬性,String有length()
14. Overload與Override的區別
答:Overload:重載
|- 在一個類中定義的若干方法
|- 所有的方法名相同,但參數類型或個數不同
|- 只有參數有關,與返回類型無關
Override:覆寫
|- 在繼承的關系中
|- 子類定義了父類同名的方法,參數類型或個數最好完全一樣。
|- 訪問許可權不能更嚴格
15. Set里的元素不能重復,用什麼方法區分?==與equals()方法的區別
答:set里的元素是不能重復的,用iterator()方法來區分重復與否,==屬於地址比較,
==用於比較引用和比較基本數據類型時具有不同的功能:
比較基本數據類型,如果兩個值相同,則結果為true
而在比較引用時,如果引用指向內存中的同一對象,結果為true
16. 列出常見的 runtime exception
答:NumberFormatException/ArrayOutIndexofBoundException/NullPointerException/ClassCastException
17. abstract class 和 interface有什麼區別?
答:抽象類:
|-由抽象方法和常量、變數、全局常量、構造方法、普通方法組成
|-使用abstract聲明
|-子類要通過extends繼承抽象類,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法
|-存在單繼承的局限
|-抽象類可以實現若干個介面
介面:
|-由抽象方法和全局常量組成
|-使用interface關鍵字
|-子類要通過implements實現介面,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法
|-一個子類可以實現多個介面
|-介面不能繼承一個抽象類,但允許繼承多個介面
18. 啟動一個線程要用start(),因為要通知jvm進行cpu資源的分配
19. try{}裡面有一個return,問finally{}裡面的代碼是否執行,在什麼時機執行?
答:finally{}裡面的代碼執行,在return之前。
20. 寫一個singleton
答:singleton的核心就是構造方法私有化,Class,Runtime都採用單例
package com.leongod.demo;
public class Singleton(){
private static final sin = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return sin;
}
}
21. 程序設計:輸入一組數字,然後排序輸出
答:package com.leongod.demo;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class IO {
public static void main(String[] args) throws Exception {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("請輸入一組數字,中間用空格分割:");
String str = buf.readLine();
Set<Integer> set = new TreeSet<Integer>();
String[] arr = str.split(" ");
for(String s : arr) {
if (s.matches("\\d+")) {
set.add(Integer.parseInt(s));
}
}
Iterator<Integer> it = set.iterator();
System.out.println("排序後的結果:");
while (it.hasNext()) {
System.out.print(it.next() + ",");
}
}
}
22.列出目錄內的文件
package com.leongod.demo;
import java.io.File;
import com.sun.org.apache.xpath.internal.functions.FuncBoolean;
public class FileDemo {
public static void main(String[] args) {
?? File file = new File("D:" + File.separator + "kongkong");
?? fun(file);
}
public static void fun(File file) {
if (file.isDirectory()) {
File[] lf = file.listFiles();
if (lf != null) {
for(File f : lf) {
fun(f);
}
}
}else {
System.out.println(file.toString());
}
}
}
23. char可以存一個中文漢字嗎?
答:可以,使用了unicode編碼
24.多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?
答:兩種多線程方法,繼承Thread類,實現Runnable介面
|-Thread類是Runnable介面的子類
|-使用Runnable介面可以實現資源共享的目的
|-所有線程操作都必須通過Thread類的start()方法啟動
兩種實現同步的方法:
|-同步代碼塊:Synchronized(this)
|-同步方法
25.f=3.4是不對的,3.4默認是double類型的
26.String and StringBuffer?
答:String 不可以修改,StringBuffer可以修改
27.Class.forname向容器中載入驅動程序
28.int與Integer有什麼區別?
答:int是基本數據類型,Integer是包裝類
在jdk1.5以後,可以實現自動裝箱和拆箱
29.2*8有效的方法是移位操作:2<<3
30.請說出類集框架的完整結構
答:類級框架的最大介面:Collection、Map、Iterator、Enumeration
Collection:存放單值
|-List:允許有重復內容
|-ArrayList:非同步處理,新的操作類,非線程安全
|-Vector:同步處理,舊的操作類,線程安全,支持Enumeration
|-Set:不允許有重復的內容,依靠hashCode()和equals()進行重復的驗證
|-HashSet:無序存放
|-TreeSet:有序存放,按Comparable排序
|-Map:存放一對值
|-HashMap:新的類,非同步處理,非線程安全,允許有null
|-HashTable:舊的類,同步處理,線程安全,不允許有null
|-TreeMap:有序排列,按key配需
|-Iterator:迭代輸出,依靠collection介面中的iterator方法輸出,是新的輸出標准
31.是否可以繼承String類?答:不可以,因為使用了final關鍵字