大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) java程序員面試中最常問的java算法面試題

java程序員面試中最常問的java算法面試題

更新時(shí)間:2019-08-06 12:09:52 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2391次



1、請(qǐng)簡(jiǎn)單解釋算法是什么?


  算法是一個(gè)定義良好的計(jì)算過程,它將一些值作為輸入并產(chǎn)生相應(yīng)的輸出值。簡(jiǎn)單來(lái)說,它是將輸入轉(zhuǎn)換為輸出的一系列計(jì)算步驟。



  2、解釋什么是快速排序算法?


  快速排序算法能夠快速排序列表或查詢。它基于分割交換排序的原則,這種類型的算法占用空間較小,它將待排序列表分為三個(gè)主要部分:


  小于Pivot的元素


  樞軸元素Pivot(選定的比較值)


  大于Pivot的元素



  3、解釋算法的時(shí)間復(fù)雜度?


  算法的時(shí)間復(fù)雜度表示程序運(yùn)行完成所需的總時(shí)間,它通常用大O表示法來(lái)表示。



     4、請(qǐng)問用于時(shí)間復(fù)雜度的符號(hào)類型是什么?


  用于時(shí)間復(fù)雜度的符號(hào)類型包括:


  Big Oh:它表示小于或等于目標(biāo)多項(xiàng)式


  Big Omega:它表示大于或等于目標(biāo)多項(xiàng)式


  Big Theta:它表示與目標(biāo)多項(xiàng)式相等


  Little Oh:它表示小于目標(biāo)多項(xiàng)式


  Little Omega:它表示大于目標(biāo)多項(xiàng)式



  5、解釋二分法檢索如何工作?


  在二分法檢索中,我們先確定數(shù)組的中間位置,然后將要查找的值與數(shù)組中間位置的值進(jìn)行比較,若小于數(shù)組中間值,則要查找的值應(yīng)位于該中間值之前,依此類推,不斷縮小查找范圍,直至得到最終結(jié)果。



     6、解釋是否可以使用二分法檢索鏈表?


  由于隨機(jī)訪問在鏈表中是不可接受的,所以不可能到達(dá)O(1)時(shí)間的中間元素。因此,對(duì)于鏈表來(lái)說,二分法檢索是不可以的(對(duì)順序鏈表或排序后的鏈表是可以用的)。



  7、解釋什么是堆排序?


  堆排序可以看成是選擇排序的改進(jìn),它可以定義為基于比較的排序算法。它將其輸入劃分為未排序和排序的區(qū)域,通過不斷消除最小元素并將其移動(dòng)到排序區(qū)域來(lái)收縮未排序區(qū)域。



  8、說明什么是Skip list?


  Skip list數(shù)據(jù)結(jié)構(gòu)化的方法,它允許算法在符號(hào)表或字典中搜索、刪除和插入元素。在Skip list中,每個(gè)元素由一個(gè)節(jié)點(diǎn)表示。搜索函數(shù)返回與key相關(guān)的值的內(nèi)容。插入操作將指定的鍵與新值相關(guān)聯(lián),刪除操作可刪除指定的鍵。



  9、解釋插入排序算法的空間復(fù)雜度是多少?


  插入排序是一種就地排序算法,這意味著它不需要額外的或僅需要少量的存儲(chǔ)空間。對(duì)于插入排序,它只需要將單個(gè)列表元素存儲(chǔ)在初始數(shù)據(jù)的外側(cè),從而使空間復(fù)雜度為O(1)。



  10、解釋什么是“哈希算法”,它們用于什么?


  “哈希算法”是一個(gè)哈希函數(shù),它使用任意長(zhǎng)度的字符串,并將其減少為唯一的固定長(zhǎng)度字符串。它用于密碼有效性、消息和數(shù)據(jù)完整性以及許多其他加密系統(tǒng)。



  11、解釋如何查找鏈表是否有循環(huán)?


  要知道鏈表是否有循環(huán),我們將采用兩個(gè)指針的方法。如果保留兩個(gè)指針,并且在處理兩個(gè)節(jié)點(diǎn)之后增加一個(gè)指針,并且在處理每個(gè)節(jié)點(diǎn)之后,遇到指針指向同一個(gè)節(jié)點(diǎn)的情況,這只有在鏈表有循環(huán)時(shí)才會(huì)發(fā)生。



  12、解釋加密算法的工作原理?


  加密是將明文轉(zhuǎn)換為稱為“密文”的密碼格式的過程。要轉(zhuǎn)換文本,算法使用一系列被稱為“鍵”的位來(lái)進(jìn)行計(jì)算。密鑰越大,創(chuàng)建密文的潛在模式數(shù)越多。大多數(shù)加密算法使用長(zhǎng)度約為64到128位的固定輸入塊,而有些則使用流方法。



  13、列出一些常用的加密算法?


  一些常用的加密算法是:


  3-way


  Blowfish


  CAST


  CMEA


  GOST


  DES 和Triple DES


  IDEA


  LOKI等等



  14、解釋一個(gè)算法的最佳情況和最壞情況之間有什么區(qū)別?


  最佳情況:算法的最佳情況解釋為算法執(zhí)行最佳的數(shù)據(jù)排列。例如,我們進(jìn)行二分法檢索,如果目標(biāo)值位于正在搜索的數(shù)據(jù)中心,則這就是最佳情況,最佳情況時(shí)間復(fù)雜度為0。


  最差情況:給定算法的最差輸入?yún)⒖肌@缈焖倥判颍绻x擇關(guān)鍵值的子列表的最大或最小元素,則會(huì)導(dǎo)致最差情況出現(xiàn),這將導(dǎo)致時(shí)間復(fù)雜度快速退化到O(n2)。



  15、解釋什么是基數(shù)排序算法?


  基數(shù)排序又稱“桶子法”,是通過比較數(shù)字將其分配到不同的“桶里”來(lái)排序元素的。它是線性排序算法之一。



  16、解釋什么是遞歸算法?


  遞歸算法是一個(gè)解決復(fù)雜問題的方法,將問題分解成較小的子問題,直到分解的足夠小,可以輕松解決問題為止。通常,它涉及一個(gè)調(diào)用自身的函數(shù)。



  17、提到遞歸算法的三個(gè)定律是什么?


  所有遞歸算法必須遵循三個(gè)規(guī)律


  遞歸算法必須有一個(gè)基點(diǎn)


  遞歸算法必須有一個(gè)趨向基點(diǎn)的狀態(tài)變化過程


  遞歸算法必須自我調(diào)用



  18、解釋什么是冒泡排序算法?


  冒泡排序算法也稱為下沉排序。在這種類型的排序中,要排序的列表的相鄰元素之間互相比較。如果它們按順序排列錯(cuò)誤,將交換值并以正確的順序排列,直到最終結(jié)果“浮”出水面。



19、寫一個(gè)方法,用一個(gè)for循環(huán)打印九九乘法表


  Java代碼


  /**


  * 打印九九乘法口訣表


  */


  public void nineNineMulitTable(){


  for (int i = 1,j = 1; j <= 9; i++) {


  System.out.print(i+"*"+j+"="+i*j+" ");


  if(i==j){


  i=0;


  j++;


  System.out.println();


  }


  }


  }



  20、給定一個(gè)java.util.Date對(duì)象,如何轉(zhuǎn)化為”2007-3-22 20:23:22”格式的字符串


  Java代碼


  /**


  * 將某個(gè)日期以固定格式轉(zhuǎn)化成字符串


  * @param date


  * @return str


  */


  public String date2FormatStr(Date date)


  {


  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


  String str = sdf.format(date);


  return str;


  }



  21、寫一個(gè)方法,能夠判斷任意一個(gè)整數(shù)是否素?cái)?shù)


  Java代碼 復(fù)制代碼 收藏代碼


  /**


  * 判斷任意一個(gè)整數(shù)是否素?cái)?shù)


  * @param num


  * @return boolean


  */


  public boolean isPrimeNumber(int num)


  {


  for (int i = 2; i <= Math.sqrt(num); i++) {


  if(num%i==0)


  {


  return false;


  }


  }


  return true;


  }



  22、寫一個(gè)方法,輸入任意一個(gè)整數(shù),返回它的階乘


  Java代碼


  /**


  *獲得任意一個(gè)整數(shù)的階乘


  *@param n


  *@returnn!


  */


  public int factorial(int num)


  {


  //遞歸


  if(num == 1)


  {


  return 1;


  }


  return num*factorial(num-1);


  }



  23、寫一個(gè)方法,用二分查找法判斷任意整數(shù)在任意整數(shù)數(shù)組里面是否存在,若存在就返回它在數(shù)組中的索引位置,不存在返回-1


  Java代碼


  /**


  *二分查找特定整數(shù)在整型數(shù)組中的位置(遞歸)


  *@param dataset


  *@param data


  *@param beginIndex


  *@param endIndex


  *@return index


  */


  public int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){


  int midIndex = (beginIndex+endIndex)/2;


  //如果查找的數(shù)要比開始索引的數(shù)據(jù)要小或者是比結(jié)束索引的書要大,或者開始查找的索引值大于結(jié)束的索引值返回-1沒有查到


  if(datadataset[endIndex]||beginIndex>endIndex){


  return -1;


  }


  if(data<dataset[midindex]){< p="">


  return binarySearch(dataset,data,beginIndex,midIndex-1);


  }else if(data>dataset[midIndex])


  {


  return binarySearch(dataset,data,midIndex+1,endIndex);


  }else {


  return midIndex;


  }


  }


  /**


  *二分查找特定整數(shù)在整型數(shù)組中的位置(非遞歸)


  *@param dataset


  *@param data


  *@return index


  */


  public int binarySearch(int[] dataset ,int data)


  {


  int beginIndex = 0;


  int endIndex = dataset.length - 1;


  int midIndex = -1;


  if(datadataset[endIndex]||beginIndex>endIndex){


  return -1;


  }


  while(beginIndex <= endIndex) {


  midIndex = (beginIndex+endIndex)/2;


  if(data<dataset[midindex]) p="" {<="">


  endIndex = midIndex-1;


  } else if(data>dataset[midIndex]) {


  beginIndex = midIndex+1;


  }else {


  return midIndex;


  }


  }


  return -1;


  }



  24、定義一個(gè)20*5的二維數(shù)組,用來(lái)存儲(chǔ)某班級(jí)20位學(xué)員的5門課的成績(jī);這5門課


  按存儲(chǔ)順序依次為:core C++,coreJava,Servlet,JSP和EJB。


  (1)循環(huán)給二維數(shù)組的每一個(gè)元素賦0~100之間的隨機(jī)整數(shù)。


  (2)按照列表的方式輸出這些學(xué)員的每門課程的成績(jī)。


  (3)要求編寫程序求每個(gè)學(xué)員的總分,將其保留在另外一個(gè)一維數(shù)組中。


  (4)要求編寫程序求所有學(xué)員的某門課程的平均分。


  class Student{


  public static void main(String[] args ){


  int[][] mark = new int[20][5];


  // 給學(xué)生賦分?jǐn)?shù)值,隨機(jī)生成


  for ( int i = 0; )


  }


  }//未完成


      更多java面試題請(qǐng)看:http://www.dabaquan.cn/tutorial_baseinterviewquestions/



提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久国产a | 国产亚洲综合色就色 | 亚洲国产精品a在线 | 亚洲欧美视频一区二区三区 | 九九热精品视频在线观看 | 天天干天天拍天天射天天添天天爱 | 免费人成年短视频在线观看网站 | 亚洲小视频 | 亚洲视频一区在线观看 | 久久伊人久久 | 亚洲精品视频在线观看视频 | 久久在线视频免费观看 | 亚州综合网 | 亚洲精品色综合久久 | 成年女人毛片免费观看中文w | 天天操一操 | 4hu影院在线观看 | 深夜在线免费观看 | 日韩国产精品欧美一区二区 | 久久这里只有精品国产 | 免费一级片视频 | 123日本不卡在线观看 | 久久频这里精品99香蕉久 | 国产精品久久久久久爽爽爽 | 欧美日韩视频在线 | 亚洲欧美中文字幕高清在线一 | 久久视频这里只有精品 | 亚洲日本视频在线观看 | 国产成人久久蜜一区二区 | 免费看成人播放毛片 | 97成人精品 | 中文字幕天堂久久精品 | 国产高清精品一级毛片 | 亚洲香蕉中文网 | 久久精品观看 | 国产在线观看精品香蕉v区 国产在线观看美女福利精 国产在线观看午夜不卡 | 一级毛片特黄久久免费看 | 深夜网站在线观看 | 午夜在线社区视频 | 男人看的网址 | 女人精69xxxxx免费无毒 |