當前位置:編程學習大全網 - 編程語言 - Cc編程面試問題

Cc編程面試問題

Java面向對象

1.super()和this()有什麽區別?

This():當前類的對象,超父類對象。

Super():對子類中父類的成員和行為的訪問必須遵守類繼承的規則。

而這代表的是當前對象,當然所有的資源都可以訪問。

在構造函數中,如果第壹行沒有寫super(),編譯器會自動插入。但是如果父類沒有不帶參數的構造函數,或者這個函數是私有的(用private修飾),這個時候就必須給父類添加壹個實例化結構。這個沒有這個要求,因為它是自己實例化的。

在方法中,super和this使用的方法類似,只是super要考慮是否可以訪問其父類的資源。

2.公共的、受保護的、私有的範圍,和不寫作時的區別?

Public:在不同的包中可用,在同壹個包中可用,在壹個類內可用。

私人:在班級內

Protected:不同包的子類,同壹個包的子類以及類內的子類都是可用的。

不寫的時候:在同壹個包或者類裏面。

3.編程並輸出下圖。

* * * * *

* * * *

* * *

* *

*

代碼如下:

公共類打印{

public static void main(String[]args){

for(int I = 0;我& lt5;i++) {

for(int j = 5;j & gt我;j - ) {

system . out . print(" * ");

}

system . out . println();

}

}

}

4.JAVA事件委托機制和垃圾收集機制。

Java事件委托機制的概念,其中壹個源生成壹個事件並將其發送給壹個或多個偵聽器。在這個方案中,偵聽器只是等待,直到它接收到壹個事件。壹旦事件被接受,偵聽器將處理該事件,然後返回。

垃圾收集機制垃圾收集是回收或釋放分配給對象但不再使用的內存的過程。如果壹個對象沒有對它的引用或者它的賦值為null,那麽輔助對象就適合於垃圾收集。

5.在JAVA中,如何跳出目前的多重嵌套循環?

使用break返回方法。

6.什麽是java序列化,如何實現?(寫壹個例子)

序列化(Serialization):壹種處理對象流的機制,即將對象的內容流式傳輸。您可以讀寫流式對象,也可以在網絡之間傳輸流式對象。序列化是為了解決讀寫對象流帶來的問題。

序列化的實現:為需要序列化的類實現Serializable接口。沒有實現此接口的方法。implementsSerializable只是為了標記對象是可序列化的,然後用壹個輸出流(比如FileOutputStream)構造壹個ObjectOutputStream。然後,使用ObjectOutputStream對象的writeObject(Object obj)方法,可以寫出參數為obj的對象(即保存其狀態),並使用輸入流對其進行恢復。

7.能壹個”。java "源文件包含多個類(不是內部類)?有什麽限制?

當然可以。如果這個類的修飾符是public,那麽它的類名和文件名必須相同。

8.排序方法有哪些?請列出。用JAVA實現快速排序?

排序方式有插入排序(直接插入排序和希爾排序)、交換排序(冒泡排序和快速排序)、選擇排序(直接選擇排序和堆排序)、歸並排序和分配排序(盒排序和基數排序)。

快速排序的偽代碼。

9.過載和覆蓋的區別。重載的方法可以改變返回值的類型嗎?

Override override,子類覆蓋父類的方法,子類傳遞給父類的引用調用子類的方法。

用相同的名稱和不同類型的參數重載壹個類的多個方法。

兩者都是Java多態性的不同表現。

重載的方法是改變返回值的類型。

1,公共類Ctest(){

公共靜態void main(){

system . out . prinln(8+8+" 88 "+8+8);

}

} 168888

(方法的覆蓋和重載是Java多態性的不同表現。重寫是父類和子類之間多態性的表現,重載是壹個類中多態性的表現。如果在子類中定義的方法與其父類具有相同的名稱和參數,我們說該方法是重寫的。當子類中的對象使用這個方法時,它將調用子類中的定義。對於它來說,父類中的定義似乎是“屏蔽”的。如果在壹個類中定義了多個同名的方法,它們要麽有不同的參數號,要麽有不同的參數類型,這就是所謂的方法重載。

重載的方法是改變返回值的類型。)

10有什麽特點。期末班?

屬性常量方法不能被重寫,類不能繼承。

11.繼承時類的執行順序問題壹般是選擇題。妳要打印什麽?

答:父類:

包裝測試;

公共類父類{

public FatherClass() {

system . out . println(" FatherClassCreate ");

}

}

子類:

包裝測試;

導入測試。父類;

公共類ChildClass擴展FatherClass{

public ChildClass() {

system . out . println(" child class create ");

}

公共靜態void main(String[] args) {

father class fc = new father class();

child class cc = new child class();

}

}

輸出結果:

丙:>;java測試。子類

父類創建

父類創建

子類創建

12.如何實現內部類?

包裝測試;

公共類OuterClass {

私有類InterClass {

公共接口(){

system . out . println(" inter class create ");

}

}

公共外部類(){

InterClass IC = new InterClass();

system . out . println(" outer class create ");

}

公共靜態void main(String[] args){

outer class oc = new outer class();

}

}

輸出結果:

丙:>;java測試/外部類內部類創建外部類創建

13.如何用JAVA實現排序,用JAVA類實現序列化(兩種方式)?

14.比如在集合的框架中,實現比較應該實現什麽樣的接口?

15.按插入方法排序的代碼如下

包裝測試;

導入Java . util . *;

類別插入排序{

ArrayList al

public InsertSort(int num,int mod) {

al =新數組列表(num);

Random rand = new Random();

system . out . println(" ArrayList sort before:");

for(int I = 0;我& ltnumi++ ){

al . add(new Integer(math . ABS(rand . nextint())% mod+1));

system . out . println(" al["+I+"]= "+al . get(I));

}

}

public void SortIt(){

整數tempInt

int MaxSize = 1;

for(int I = 1;我& ltal . size();i++){

tempInt =(Integer)al . remove(I);

if(tempint . int value()& gt;=((Integer)al . get(MaxSize-1))。intValue()){

al.add(MaxSize,tempInt);

maxsize++;

system . out . println(al . tostring());

}否則{

for(int j = 0;j & ltMaxSizej++ ){

if((Integer)al . get(j))。int value()>;=tempInt.intValue()){

al.add(j,tempInt);

maxsize++;

system . out . println(al . tostring());

打破;

}

}

}

}

system . out . println(" ArrayList sort after:");

for(int I = 0;我& ltal . size();i++) {

system . out . println(" al["+I+"]= "+al . get(I));

}

}

公共靜態void main(String[] args) {

insert sort is = new insert sort(10,100);

是。sort it();

}

}

實現JAVA類序列化的方法是實現java.io.Serializable接口。

集合框架中的比較需要實現Comparable接口和Comparator接口。

16.編程:寫壹個函數截取字符串,輸入是壹個字符串和字節數,輸出是壹個按字節截取的字符串。但要保證漢字不被截成兩半,比如“I ABC”4,應該截成“I AB”,輸入“I ABC中文DEF”,6,應該輸出為“I ABC”而不是“I ABC+中文半”。

公共靜態void split(String source,intnum)引發異常{

intk = 0;

Stringtemp =

for(int I = 0;我& ltsource.length()。i++){

byte[]b=(source.charAt(i)+" ")。getBytes();

k = k+b . length;

if(k & gt;num){

打破;

}

temp = temp+source . charat(I);

}

system . out . println(temp);

}

15,Java編程,打印昨天的當前時間。

公共類昨天當前{

public void main(String[] args){

calendar cal = calendar . getinstance();

cal.add(日歷。日期,-1);

system . out . println(cal . gettime());

}

}

16,文件讀寫,實現壹個計數器。

public int getNum(){

int I =-1;

嘗試{

String stri =

buffered reader in = new buffered reader(new filereader(f));

while((stri=in.readLine())!=null){

I = integer . parse int(stri . trim());

}

in . close();

}catch(異常e){

e . printstacktrace();

}

返回I;

}

public void setNum(){

int I = getNum();

i++;

嘗試{

PrintWriter out = new PrintWriter(newBufferedWriter(new FileWriter(f,false)));

out . write(string . value of(I));//可能是編碼的原因。如果直接寫int,會有java編碼和windows編碼的混淆,所以這裏寫String。

out . close();

}catch(異常e){

e . printstacktrace();

}

}

17,指出以下程序的運行結果。

A級

靜態{

system . out . print(" 1 ");

}

公共A(){

system . out . print(" 2 ");

}

}

B類擴展了A{

靜態{

system . out . print(" a ");

}

公共B(){

system . out . print(" b ");

}

}

公共類Hello{

公共靜態void main(String[] ars){

a ab = new B();//在這裏執行,結果:1a2b

ab = new B();//在這裏執行,結果:1a2b2b

}

註意:壹個類的靜態代碼段可以看作是該類第壹次加載(由虛擬機加載)的代碼。對於壹個類的加載,應該先執行它的基類的構造,然後再執行它自己的構造。

18.抽象類和接口有什麽區別?

(1)接口可以多次實現,抽象類只能用單個extend (2)接口定義,可以定義實現抽象類(3)接口默認字段定義為:publicstatic final,抽象類默認字段為“friendly”(在本包可見)。

需要積累函數時使用抽象類,不需要積累函數時使用接口。

19.階級的反思機制是什麽?

通過類對象,可以得到字段、方法、構造器、接口、超類、修改等。您可以通過該類實例化壹個實例、設置屬性和喚醒方法。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,拿課的三個過程是什麽?

① object.getclass () ② class.class或integer . type(int)integer . class(Java . lang . integer)③class . forname();

22.如何調用類中的方法?

①生成壹個類數組解釋方法的參數②通過類對象和方法參數獲取方法③通過method.invoke(實例,參數值數組)喚醒方法。

23.如何將數字字符轉換成整數(Double)?

integer . parse int(" 1234 ")double . parse double(" 123.2 ")

24.如何把數字轉換成字符?

1+"" 1.0+""

25、如何去小數點後兩位,並四舍五入。

雙d = 1256.22d;d = d/100;system . out . println(math . round(d)* 100);

26、如何獲取日期、小時、分鐘和秒?

calendar c = calendar . getinstance();

c.set(日歷。年,2004年);

c.set(日歷。月,0);

c.set(日歷。月日,31);

system . out . println(c . get(Calendar。YEAR)+" "+(c.get(日歷。月)+1)+" "+c.get(日歷。月日);

27.如何得到1970到現在的毫秒數?

Java . util . Date dat = new Date();long now = dat . gettime();

或System.currentTimeMillis()

28、如何得到壹個日期是壹個月的最後壹天?

當前日期加壹天,如果當前日期與結果的月份不同,則為最後壹天。

取次月第壹天,次月第壹天-1

公共靜態void main(String[] args){

calendar c = calendar . getinstance();

c.set(日歷。年,2004年);

c.set(日歷。月,0);

c.set(日歷。月日,30);

Calendar c 1 =(Calendar)c . clone();

system . out . println(c . get(Calendar。YEAR)+""+(c.get(日歷。月)+1)+" "+c.get(日歷。月日);

c.add(日歷。月日,1);

如果(c.get(日歷。月)!=c1.get(日歷。月)){

System.out.println("是最後壹天");

}否則{

System.out.println("不是後天");

}

}

29.如何格式化日期?

導入Java . text . simple date format;

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 d 1 = SDF . parse(" yyyy-mm-DD ");//將字符串轉換為日期

30.編碼轉換,如何將GB2312編碼的字符串轉換成ISO-8859-1編碼的字符串。

字符串a =新字符串(“鐘”。getbytes ("GB 2312 ")," ISO-8859-1 ");

字符串a =新字符串(" in "。getBytes(" iso-8859-1 "));

應該是字符串a =新字符串(“鐘”。getbytes ("GB 2312 ")," ISO-8859-1 ");

string a 1 = new string(a . getbytes(" iso-8859-1 "));

  • 上一篇:我盡然沒發現女神的兩次暗示表白,而且對我開始冷漠了,怎麽辦?
  • 下一篇:PRC什麽意思
  • copyright 2024編程學習大全網