A. java中有哪些數據結構
數據結構:
①數組 (Array)
在程序設計中,為了處理方便, 把具有相同類型的若干變數按有序的形式組織起來。這些按序排列的同類數
據元素的集合稱為數組。在C語言中, 數組屬於構造數據類型。一個數組可以分解為多個數組元素,這些數組
元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字元數組、指
針數組、結構數組等各種類別。
②棧 (Stack)
棧是只能在某一端插入和刪除的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後
的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)。
③隊列 (Queue)
一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行
插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。
④鏈表 (Linked List)
一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。
鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:
一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。
⑤樹 (Tree)
樹是包含n(n>0)個結點的有窮集合K,且在K中定義了一個關系N,N滿足 以下條件:
(1)有且僅有一個結點 k0,他對於關系N來說沒有前驅,稱K0為樹的根結點。簡稱為根(root)
(2)除K0外,k中的每個結點,對於關系N來說有且僅有一個前驅。
(3)K中各結點,對關系N來說可以有m個後繼(m>=0)。
⑥堆 (Heap)
在計算機科學中,堆是一種特殊的樹形數據結構,每個結點都有一個值。通常我們所說的堆的數據結構,是指
二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。
⑦圖 (Graph)
圖是由結點的有窮集合V和邊的集合E組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,
邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關系。
⑧散列表 (Hash)
若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上。由此,不需比較便可直接取得所查記錄。稱
這個對應關系f為散列函數(Hash function),按這個思想建立的表為散列表。
差不多我就知道這些了~
B. 面試java程序員時被問到:如果你要寫一個俄羅斯方塊的游戲,每種方塊你會考慮用什麼數據結構怎麼答
可以設想長條橫著和豎著的情況,一個塊可以由4*4的二維數組組成。其中由0表示空白,1表示有塊。另外網上還有「88行俄羅斯方塊」的大牛寫的示例,是又把這個二進制數組轉換成了一個相應的整數,空間效率很高。
C. java面試時的一個數據結構問題
importjava.util.Random;
publicclassShuiji{
String[]result;
intindex=0;
Randomran=newRandom();
publicShuiji(){
result=newString[100];
getResult();
for(inti=0;i<result.length;i++){
if(i%10==9){
System.out.println(""+result[i]+",");
}else{
System.out.print(""+result[i]+",");
}
}
}
publicstaticvoidmain(String[]args){
newShuiji();
}
publicvoidgetResult(){
for(inti=0;i<result.length;i++){
StringaddValue=getString();
if(containsValue(addValue)==true){
i--;
}else{
result[i]=addValue;
index++;
}
}
}
publicbooleancontainsValue(StringpValue){
booleancont=false;
for(inti=0;i<index;i++){
if(result[i].equals(pValue)){
cont=true;
break;
}
}
returncont;
}
publicStringgetString(){
intfirst=ran.nextInt(36);
StringBuffersb=newStringBuffer();
if(first<10){
sb.append((char)(48+first));
}else{
sb.append((char)(87+first));
}
intsecond=ran.nextInt(36);
if(second<10){
sb.append((char)(48+second));
}else{
sb.append((char)(87+second));
}
returnsb.toString();
}
}
我也不知道這種演算法是不是夠簡單,可以參考一下。
D. 程序員小白如何通過Java面試
1、了解業內招聘要求:多看幾家同類崗位的技術要求,大概就知道用人單位的需求了
2、多找找面試常見技術題:不同企業的面試題各種不同,多去找找,多背背
3、簡歷設計:這個就是要注意在簡歷中體現自己的項目經驗、技術水平
4、面試現場反應:注意自己的著裝、語言表達、技術表達
以上都是在你有專業技術的前提下進行的,如果專業技術就是小白,還是先提升專業技術吧
E. 新手初學Java有必要去學習數據結構與演算法嗎
還是有些必要的,大公司筆試面試基本都是靠計算機網路及數據結構與演算法。
建議找些基礎的演算法如排序查找等入門就可以了,java新人用不到多深層次的演算法,
新人初學Java的話建議還是講基礎知識弄通弄透比較好。
F. Java面試筆試,數據結構和演算法考到什麼程度
你說的那個數據結構不一定考的。
Java面試就那麼點東西,各個公司也不一樣。
有的分筆試和機試。這些公司想看看實際面試人員的能力,節省了以後的時候。
筆試中,無非就是一些概念性的東西巴了。
比如:jsp是servlet嗎?
servlet的生存周期;還有一些面向對象的知識。這些平常用心的話都沒問題,即使臨陣磨槍也行。
那麼機試就的要看你自己的能力了,對框架的屬性程度。還有就是在也不能常見的對數據
庫的CRUD也就是增刪改查操作。機試都好這口。
其實面試如果也沒筆試機試那麼就問幾道題的話,如果是技術人,幾道題下來就知道你的底子了,在問些邏輯上的也就知道要你還是不要你了。
在有你要對一些資料庫知識了解一些。
做java的
oracle
得達到掌握
sql
server
了解就行
基本語法啥的就可以了
mysql
這個也得達到掌握
別的就不要會用到
G. java數據結構是什麼
數組(Array)
堆棧(Stack)
隊列(Queue)
鏈表(Linked List)
樹(Tree)
圖(Graph)
堆(Heap)
散列表(Hash)
這些是常見的數據結構