① 哪裡有java筆試題
https://www.nowcoder.com/contestRoom?mutiTagIds=639
牛客網-Java專題
很適合程序猿刷筆試面試題
望採納 謝謝。
② Java方向綜合筆試題4
21 B
22 B
23 C
24 C
25 D
26 A
27 C
③ Java方向綜合筆試題5
35 A
34 A
33 C
32 B
31 A
30 B
29 C
④ 求java考題,筆試題
Java面向對象
1. super()與this()的區別?
This():當前類的對象,super父類對象。
Super():在子類訪問父類的成員和行為,必須受類繼承規則的約束
而this他代表當前對象,當然所有的資源都可以訪問.
在構造函數中,如果第一行沒有寫super(),編譯器會自動插入.但是如果父類沒有不帶參數的構造函數,或這個函數被私有化了(用private修飾).此時你必須加入對父類的實例化構造.而this就沒有這個要求,因為它本身就進行實例化的構造.
而在方法中super和this使用的方法就差不多了.只不過super 要考慮是否能訪問其父類的資源.
2. 作用域public,protected,private,以及不寫時的區別?
Public:不同包、 同一包、 類內都可用
Private: 類內
Protected:不同包的子類、同一包、 類內都可用
不寫時: 同一包內、類內
3. 編程輸出如下圖形。
* * * * *
* * * *
* * *
* *
*
代碼如下:
public class Print {
publicstatic void main(String[] args) {
for(int i = 0; i < 5; i++) {
for(int j = 5; j > i; j--) {
System.out.print("*");
}
System.out.println();
}
}
}
4. JAVA的事件委託機制和垃圾回收機制
Java事件委託機制的概念,一個源產生一個事件並將它送到一個或多個監聽器那裡。在這種方案中,監聽器簡單的等待,直到它收到一個事件。一旦事件被接受,監聽器將處理這個事件,然後返回。
垃圾回收機制垃圾收集是將分配給對象但不再使用的內存回收或釋放的過程。如果一個對象沒有指向它的引用或者其賦值為null,則次對象適合進行垃圾回收
5. 在JAVA中,如何跳出當前的多重嵌套循環?
用break; return 方法。
6. 什麼是java序列化,如何實現java序列化?(寫一個實例)
序列化:處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。
序列化的實現:將需要被序列化的類實現Serializable介面,該介面沒有需要實現的方法,implementsSerializable只是為了標注該對象是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。
7. 一個".java"源文件中是否可以包括多個類(不是內部類)?有什麼限制?
可以。如果這個類的修飾符是public,其類名與文件名必須相同。
8. 排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序?
排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸並排序,分配排序(箱排序、基數排序)
快速排序的偽代碼。
9. Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
重寫Override,子類覆蓋父類的方法,將子類傳與父類的引用調用的還是子類的方法。
重載Overloading 一個類多個方法,名稱相同,參數個數類型不同。
兩者都是Java多態性的不同表現。
Overloaded的方法是可以改變返回值的類型。
1, public class Ctest(){
Public static void main(){
System.out.prinln(8+8+」88」+8+8);
}
} 168888
(方法的重寫Overriding和重載Overloading是Java多態性的不同表現。重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被「屏蔽」了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。
Overloaded的方法是可以改變返回值的類型。)
10. Final類有什麼特點?
屬性常量 方法不可以overridding 類不可以繼承
11. 繼承時候類的執行順序問題,一般都是選擇題,問你將會列印出什麼?
答:父類:
package test;
public class FatherClass {
public FatherClass() {
System.out.println("FatherClassCreate");
}
}
子類:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass{
public ChildClass() {
System.out.println("ChildClassCreate");
}
public static void main(String[] args) {
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
輸出結果:
C:>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
12. 內部類的實現方式?
package test;
public class OuterClass {
private class InterClass {
Public Interlass(){
System.out.println("InterClassCreate");
}
}
public OuterClass(){
InterClass ic = new InterClass();
System.out.println("OuterClassCreate");
}
public static void main(String[] args){
OuterClass oc = new OuterClass();
}
}
輸出結果:
C:>java test/OuterClass InterClass Create OuterClass Create
13. 用JAVA實現一種排序,JAVA類實現序列化的方法(二種)?
14. 如在COLLECTION框架中,實現比較要實現什麼樣的介面?
15. 用插入法進行排序代碼如下
package test;
import java.util.*;
class InsertSort {
ArrayList al;
public InsertSort(int num,int mod) {
al = new ArrayList(num);
Random rand = new Random();
System.out.println("The ArrayList SortBefore:");
for (int i=0;i<num ;i++ ){
al.add(new Integer(Math.abs(rand.nextInt())% mod + 1));
System.out.println("al["+i+"]="+al.get(i));
}
}
public void SortIt(){
Integer tempInt;
int MaxSize=1;
for(int i=1;i<al.size();i++){
tempInt = (Integer)al.remove(i);
if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue()){
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
} else {
for (int j=0;j<MaxSize ;j++ ){
if(((Integer)al.get(j)).intValue()>=tempInt.intValue()){
al.add(j,tempInt);
MaxSize++;
System.out.println(al.toString());
break;
}
}
}
}
System.out.println("The ArrayList SortAfter:");
for(int i=0;i<al.size();i++) {
System.out.println("al["+i+"]="+al.get(i));
}
}
public static void main(String[] args) {
InsertSort is = new InsertSort(10,100);
is.SortIt();
}
}
JAVA類實現序例化的方法是實現java.io.Serializable介面
Collection框架中實現比較要實現Comparable 介面和 Comparator 介面
16. 編程:編寫一個截取字元串的函數,輸入為一個字元串和位元組數,輸出為按位元組截取的字元串。但是要保證漢字不被截半個,如"我ABC"4,應該截為"我AB",輸入"我ABC漢DEF",6,應該輸出為"我ABC"而不是"我ABC+漢的半個"。
public static void split(String source,intnum) throws Exception{
intk=0;
Stringtemp="";
for(int i = 0; i <source.length(); i++){
byte[]b=(source.charAt(i)+"").getBytes();
k=k+b.length;
if(k>num){
break;
}
temp=temp+source.charAt(i);
}
System.out.println(temp);
}
15、Java編程,列印昨天的當前時刻
public class YesterdayCurrent{
public void main(String[] args){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
}
16、文件讀寫,實現一個計數器
public int getNum(){
int i = -1;
try{
String stri="";
BufferedReader in = new BufferedReader(newFileReader(f));
while((stri=in.readLine())!=null){
i = Integer.parseInt(stri.trim());
}
in.close();
}catch(Exception e){
e.printStackTrace();
}
return i;
}
public void setNum(){
int i = getNum();
i++;
try{
PrintWriter out=new PrintWriter(newBufferedWriter(new FileWriter(f,false)));
out.write(String.valueOf(i)); //可能是編碼的原因,如果直接寫入int的話,將出現java編碼和windows編碼的混亂,因此此處寫入的是String
out.close() ;
}catch(Exception e){
e.printStackTrace();
}
}
17、指出下面程序的運行結果。
class A{
static{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
public class Hello{
public static void main(String[] ars){
A ab = new B(); //執行到此處,結果: 1a2b
ab = new B(); //執行到此處,結果: 1a2b2b
}
}注:類的static 代碼段,可以看作是類首次載入(被虛擬機載入)執行的代碼,而對於類的載入,首先要執行其基類的構造,再執行其本身的構造
18、抽象類和介面的區別?
(1)介面可以被多重implements,抽象類只能被單一extends(2)介面只有定義,抽象類可以有定義和實現(3)介面的欄位定義默認為:publicstatic final, 抽象類欄位默認是"friendly"(本包可見)
當功能需要累積時用抽象類,不需要累積時用介面。
19、什麼是類的反射機制?
通過類(Class對象),可以得出當前類的fields、method、construtor、interface、superClass、modified等,同是可以通過類實例化一個實例、設置屬性、喚醒方法。Spring中一切都是返射、struts、hibernate都是通過類的返射進行開發的。
20、類的返射機制中的包及核心類?
①java.lang.Class②java.lang.refrection.Method③java.lang.refrection.Field
④java.lang.refrection.Constructor⑤java.lang.refrection.Modifier⑥java.lang.refrection.Interface
21、得到Class的三個過程是什麼?
①對象.getClass()②類.class或Integer.type(int) Integer.class(java.lang.Integer)③Class.forName();
22、如何喚起類中的一個方法?
①產生一個Class數組,說明方法的參數②通過Class對象及方法參數得到Method③通過method.invoke(實例,參數值數組)喚醒方法
23、如何將數值型字元轉換為數字(Integer,Double)?
Integer.parseInt(「1234」) Double.parseDouble(「123.2」)
24、如何將數字轉換為字元?
1+」」 1.0+」」
25、如何去小數點前兩位,並四捨五入。
double d=1256.22d; d=d/100; System.out.println(Math.round(d)*100);
26、如何取得年月日,小時分秒?
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,2004);
c.set(Calendar.MONTH,0);
c.set(Calendar.DAY_OF_MONTH,31);
System.out.println(c.get(Calendar.YEAR)+" "+(c.get(Calendar.MONTH)+1)+" "+c.get(Calendar.DAY_OF_MONTH));
27、如何取得從1970年到現在的毫秒數
Java.util.Date dat=new Date(); long now=dat.getTime();
或System.currentTimeMillis()
28、如何獲取某個日期是當月的最後一天?
當前日期加一天,若當前日期與結果的月份不相同,就是最後一天。
取下一個月的第一天,下一個月的第一天-1
public static void main(String[] args){
Calendarc=Calendar.getInstance();
c.set(Calendar.YEAR,2004);
c.set(Calendar.MONTH,0);
c.set(Calendar.DAY_OF_MONTH,30);
Calendarc1=(Calendar)c.clone();
System.out.println(c.get(Calendar.YEAR)+""+(c.get(Calendar.MONTH)+1)+" "+c.get(Calendar.DAY_OF_MONTH));
c.add(Calendar.DAY_OF_MONTH,1);
if(c.get(Calendar.MONTH)!=c1.get(Calendar.MONTH)){
System.out.println("是最後一天");
}else{
System.out.println("不是取後一天");
}
}
29、如何格式化日期?
Import java.text. SimpleDateFormat;
SimpleDateFormat sdf=newSimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date dat=new Date();
String str=sdf.format(dat); //把日期轉化為字元串
System.out.println(str);
Java.util.Date d1=sdf.parse(「yyyy-mm-dd」); //將字元串轉化為日期
30、編碼轉換,怎樣實現將GB2312編碼的字元串轉換為ISO-8859-1編碼的字元串。
String a=new String("中".getBytes("gb2312"),"iso-8859-1");
String a=new String("中".getBytes("iso-8859-1"));
應該是String a=new String("中".getBytes("gb2312"),"iso-8859-1");
String a1=newString(a.getBytes("iso-8859-1"));
⑤ JAVA筆試題 j2se
試著解答幾道,不對的地方後面的請指正
程序題:s字元串從主程序字元串數組中讀到得應該是"java"這個字元串,循環為統計大小寫字母的個數,結果應為輸出:0,4
判斷:8.錯誤,構造函數可以有多個
9.正確,可以用new來聲明一個類得實例對象(類不能是抽象類)
10.正確
11.錯誤,默認為double
12.錯誤,JAVA為面向對象的語言
13.錯誤,"+"可以拼接,但是沒有"-"這一說
14.錯誤,//為單行注釋
15.正確
填空:
(x++)/3的值是(0) x++加號在後面,則是先將X參加取整運算,然後再自加
X=(X++)/3這個問題還真沒遇到過,不過分析一下(x++)/3取整之後X自加,這時候X是3,然後的=號賦值運算又把之前(x++)/3的結果賦給了X,那麼X最後的值還是0;
運算:
既然條件都給定了,那麼直接用
(1) String[] str = {"open","door","the","open","name"}; //聲明初始化數組
(2) for(int i = 0;i < str.length;i++) //循環統計"open"字元串的個數
(3) if("open".equals(str[i])) //如果str[i]為"open"那麼將count加1
不對的地方後面的請指出
⑥ 關於java 的筆試題
1:方法很多:
架構上的優化:客戶端,伺服器,資料庫的重新分工合作,架構優化很重要。
程序上的優化:代碼的重構和演算法精簡,SQL優化。
其他優化。。。
2:
有兩個系統,可以把讀操作交給 30%的操作系統管理,把寫操作交給 3%的操作系統來管理。
one day one answer for question.
I hope you like my answer.
⑦ 關於JAVA繼承類的一道筆試題
構造函數都是先執行構造 再執行其他的.像你的class X 你去用無參構造器new一個X時,他會先調用你重寫的無參構造器,如果自己沒寫jvm會去調用默認的,默認的無參數構造器是默認就存在的不論你寫不寫.執行構造函數時他會先執行你構造方法的代碼,執行完成後才會去執行其他方法 去生成這個類的屬性 執行靜態代碼塊,class X中的 Y b=new Y(); 這段代碼你放哪裡其實只是聲明了一個X的成員變數而已,放哪裡執行順序都是一樣的
⑧ JAVA 筆試題目
1,s1=s1+1,左邊是short型,右邊是int型,需強制轉換,而第二個可以
2,jsp是由servlet發展過來的,jsp顯示頁面的,servlet是控制頁面的
3,通過所謂的數據高速緩存來實現對數據的高速運算與操作的
4,delete from table 是dml,truncate table 是ddl,兩者都是刪除表的,前者可以帶條件刪除某一個屬性,而後者則是刪除整個表結構的
5,function ShowFile(filepath)
{
var str="c:\files\abc.pdf",
ActiveXObject ax = new ActiveXObject("Scripting.FileSystemObject");
ax= fso.GetFileName(str);
return(ax);
}
6,obj
7,1)increment:
用途: 適用於int, short, long類型的主鍵, 每次主鍵自增1
缺點: 並發操作資料庫時, 多個實例各自維護自己的主鍵狀態, 會發生沖突
2)identity:
用途: 適用於內部支持標識欄位的資料庫(db2, mysql, sybase, mssql)
3)sequence:
用途: 適用於內部支持序列的資料庫(db2, oracle, postgre)
用法: 必須在資料庫中先創建一個序列, 並且在hibernate配置文件中對param進行配置
4)native:
用途: 根據使用的資料庫自行判斷使用identity, sequence, hi/lo
9,null,null,10,數組只有length而string才是length()
10,不可以,string不可變,stringbuffer可變
11,不是,byte,short,int,long,char,float,double,boolean
12,MVC是一種編程的思想,也是一種框架模式。
M (Model) 是指數據層(持久層),V (View) 是指表現層,C (Controller) 是指控制層.
MVC模式是由這三層構成。而且這三層是相互獨立。
控制層是連接數據層與表現層的橋梁。它是用來處理用戶應用邏輯的。
同時,也利用控制層將View層與Model層分離。
View層是不能調用Model層中的任何代碼。
13,模式的本質
在任何時間內只有一個類實例存在的模式
需要有一個從中進行全局訪問和維護某種類型數據的區域的環境下使用單例模式
解決方案就是保證一個類只有一個類實例存在
本質就是實例共用同一塊內存區域
public class Singleton{
private static fial Singleton intance=new Singleton();
private Singleton(){}
public void getInstance(){
return intance;
}
}
⑨ java面試/筆試題
1.JSP、Servlet、JavaBean技術的出現給我們構建強大的企業應用系統提供了可能。但用這些技術構建的系統非常的繁亂,所以在此之上,我們需要一個規則、一個把這些技術組織起來的規則,這就是框架,Struts便應運而生。
經過長達五年的發展,Struts已經逐漸成長為一個穩定、成熟的框架,並且佔有了MVC框架中最大的市場份額。但是Struts某些技術特性上已經落後於新興的MVC框架。面對Spring MVC、Webwork2 這些設計更精密,擴展性更強的框架,Struts受到了前所未有的挑戰。但站在產品開發的角度而言,Struts仍然是最穩妥的選擇。
Struts2.0為其它框架提供了更好的集成。
使得與Spring的集成非常的容易。
2.Struts的工作流程:
在web應用啟動時就會載入初始化ActionServlet,ActionServlet從
struts-config.xml文件中讀取配置信息,把它們存放到各種配置對象
當ActionServlet接收到一個客戶請求時,將執行如下流程.
-(1)檢索和用戶請求匹配的ActionMapping實例,如果不存在,就返回請求路徑無效信息;
-(2)如果ActionForm實例不存在,就創建一個ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中;
-(3)根據配置信息決定是否需要表單驗證.如果需要驗證,就調用ActionForm的validate()方法;
-(4)如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActuibErrors對象,就表示表單驗證成功;
-(5)ActionServlet根據ActionMapping所包含的映射信息決定將請求轉發給哪個Action,如果相應的Action實例不存在,就先創建這個實例,然後調用Action的execute()方法;
-(6)Action的execute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉發給ActionForward對象指向的JSP組件;
-(7)ActionForward對象指向JSP組件生成動態網頁,返回給客戶;
3.在struts配置文件中配置具體的錯誤提示,再在FormBean中的validate()方法具體調用。
4.(1) 對JDBC訪問資料庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重復性代碼。
(2) Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作
(3)hibernate使用Java反射機制,而不是位元組碼增強程序來實現透明性。
(4)hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關系資料庫,從一對一到多對多的各種復雜關系。
5.原理:
(1).讀取並解析配置文件
(2).讀取並解析映射信息,創建SessionFactory
(3).打開Sesssion
(4).創建事務Transation
(5).持久化操作
(6).提交事務
(7).關閉Session
(8).關閉SesstionFactory
6.
Hibernate的最大的好處就是簡化資料庫的操作,允許你的代碼以對象模式來訪問資料庫內容,
比如通常我們找一個User的資料需要select出所需要的資料,而通過hibnate我們可以把這個User的資料作為一個對象來看待
,通過User.getName()或者User.getId()等操作來獲得,這樣就完全統一了上層JAVA或者C#等OO語言中對於資料庫的非OO操作的不和諧了.
另外對於復雜的表和表之間的關聯我們也不用去使用復雜的Select等SQL來操作,而使用對象可以方便獲得,
比如多對多關系某用戶屬於的部門的名稱,雖然底層資料庫使用了3個表的主鍵關聯操作,
但是我們可以通過User.getDep().getName()來簡單的獲得,這個就是持久化對象的好處了
7.
(1)、spring能簡化企業級開發, spring可以用簡單的java bean來代替實現復雜的EJB。(大部分情況下)
(2)、spring是一個輕量級的IOC和AOP框架,可以spring的IOC實現松耦合,而作為一個AOP框架他又能分離系統服務,實現內聚開發
(3)、spring是非侵入式,基於spring的系統可以不依賴於spring的類。
良好的spring運用可以使程序代碼清晰,容易維護,容易測試。
8.
Spring是個很不錯的框架。內部最核心的就是IOC了,
動態注入,讓一個對象的創建不用new了,可以自動的生產,這其實就是利用java里的反射
反射其實就是在運行時動態的去創建、調用對象,Spring就是在運行時,跟xml Spring的配置
文件來動態的創建對象,和調用對象里的方法的 。
Spring還有一個核心就是AOP這個就是面向切面編程,可以為某一類對象 進行監督和控制(也就是
在調用這類對象的具體方法的前後去調用你指定的 模塊)從而達到對一個模塊擴充的功能。這些都是通過
配置類達到的。
Spring目的:就是讓對象與對象(模塊與模塊)之間的關系沒有通過代碼來關聯,都是通過配置類說明
管理的(Spring根據這些配置 內部通過反射去動態的組裝對象)
要記住:Spring是一個容器,凡是在容器里的對象才會有Spring所提供的這些服務和功能。
Spring里用的最經典的一個設計模式就是:模板方法模式。(這里我都不介紹了,是一個很常用的設計模式)
Spring里的配置是很多的,很難都記住,但是Spring里的精華也無非就是以上的兩點,把以上兩點跟理解了
也就基本上掌握了Spring.
9.
(1).spring mvc請所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模塊負責負責對請求進行真正的處理工作。
(2).DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.
(3).DispatcherServlet請請求提交到目標Controller
(4).Controller進行業務邏輯處理後,會返回一個ModelAndView
(5).Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象
(6).視圖對象負責渲染返回給客戶端。
⑩ 幾道java的筆試題
1.a
2.b
3.d
4.d
5.c