還是有些必要的,大公司筆試面試基本都是靠計算機網路及數據結構與演算法。
建議找些基礎的演算法如排序查找等入門就可以了,java新人用不到多深層次的演算法,
新人初學Java的話建議還是講基礎知識弄通弄透比較好。
『貳』 Java面試筆試,數據結構和演算法考到什麼程度
你說的那個數據結構不一定考的。
Java面試就那麼點東西,各個公司也不一樣。
有的分筆試和機試。這些公司想看看實際面試人員的能力,節省了以後的時候。
筆試中,無非就是一些概念性的東西巴了。
比如:jsp是servlet嗎?
servlet的生存周期;還有一些面向對象的知識。這些平常用心的話都沒問題,即使臨陣磨槍也行。
那麼機試就的要看你自己的能力了,對框架的屬性程度。還有就是在也不能常見的對數據
庫的CRUD也就是增刪改查操作。機試都好這口。
其實面試如果也沒筆試機試那麼就問幾道題的話,如果是技術人,幾道題下來就知道你的底子了,在問些邏輯上的也就知道要你還是不要你了。
在有你要對一些資料庫知識了解一些。
做java的
oracle
得達到掌握
sql
server
了解就行
基本語法啥的就可以了
mysql
這個也得達到掌握
別的就不要會用到
『叄』 移動互聯網公司做java開發的為什麼對數據結構與演算法要求比較高呢
因為性能很重要, 一個優秀的數據結構可以很高效的處理復雜的問題。 因為移動互聯網本身就決定了性能的重要程度。 所以數據結構演算法真的很重要。 尤其是搞大數據處理
『肆』 java數據結構和演算法一些問題
這是數據結構:
#include<stdio.h>
void display(struct film);
struct film
{
char name[25];
};
main()
{
struct film f1;
scanf("%s",f1.name);
display(f1);
}
void display(struct film x)
{
printf("%s\n",x.name);
}
這是一個抽象類:
abstract class human
{
public abstract void eat();
public void walk()
{
System.out.println ("walk on foot");
}
}
抽象類必須有關鍵字:abstract
也就是說只有在class之前寫abstract那就是抽象類.
在方法之前寫abstract,那就是抽象方法!
『伍』 演算法與數據結構對於Java程序員意味著什麼
我覺得被採納的答案有失偏頗,數據結構是非常重要的,而且不同的演算法根本不會只產生0.01秒的優勢.最簡單的例子,排序,N^2的效率怎麼可能跟N*logN比.在投行等地,有些程序即便是演算法大量優化過後還要執行幾個小時,可想而知如果不大量優化,恐怕要至少執行幾天.另外很多API內部的數據結構搞不清楚,使用上也是稀里糊塗.只不過,真心想研究演算法,應該至少會C/C++.java的優勢不在這上面.當然了,演算法,學了身價肯定會上升的.google,amazon面試都要考演算法的
『陸』 求有一定難度的考驗數據結構演算法能力的Java面試題
1.實現生產者和消費者問題(多線程)
2.冒泡排序、二分查找
先寫這幾個
『柒』 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();
}
}
我也不知道這種演算法是不是夠簡單,可以參考一下。
『捌』 java數據結構與演算法分析
於之前面試android的時候考到了很多關於java的知識,所以這次重溫數據結構知識就打算用java來學習,畢竟android是以java為基礎的,而且我現在學習的j2ee架構也是以java為基礎的。
java中的類就是對現實世界的對象的一種抽象,例如人就是一個類別,人有名字,聯系電話,住址等成員屬性,人擁有說話,吃飯,走路等成員方法。類就是這樣,定義了一種對象,它有什麼,會做什麼。
繼承——子類就是父類的一種特定類別。例如學生就是人的子類,學生屬於人,是特定的一類人。所以我們讓學生繼承人,這樣學生可以擁有人的屬性和方法,也就是說,學生也有了名字,聯系電話,住址等成員屬性,擁有說話,吃飯,走路等成員方法。但是學生還有特定的一些方法(讀書,上課),或者特定的一些屬性(學號,年級),這些可以添加在子類中。
因為每個子類都屬於父類,例如每個學生都屬於人,所以可以用父類來引用子類的對象:People p = new Student();反過來不行。
java中一個類只能繼承一個父類,也就是單繼承。
但一個類可以實現多個介面,間接地實現了多繼承。介面就是一系列方法的聲明,沒有實現。於之前面試android的時候考到了很多關於java的知識,所以這次重溫數據結構知識就打算用java來學習,畢竟android是以java為基礎的,而且我現在學習的j2ee架構也是以java為基礎的。
java中的類就是對現實世界的對象的一種抽象,例如人就是一個類別,人有名字,聯系電話,住址等成員屬性,人擁有說話,吃飯,走路等成員方法。類就是這樣,定義了一種對象,它有什麼,會做什麼。
繼承——子類就是父類的一種特定類別。例如學生就是人的子類,學生屬於人,是特定的一類人。所以我們讓學生繼承人,這樣學生可以擁有人的屬性和方法,也就是說,學生也有了名字,聯系電話,住址等成員屬性,擁有說話,吃飯,走路等成員方法。但是學生還有特定的一些方法(讀書,上課),或者特定的一些屬性(學號,年級),這些可以添加在子類中。
因為每個子類都屬於父類,例如每個學生都屬於人,所以可以用父類來引用子類的對象:People p = new Student();反過來不行。
java中一個類只能繼承一個父類,也就是單繼承。
但一個類可以實現多個介面,間接地實現了多繼承。介面就是一系列方
『玖』 java數據結構和演算法
首先看存儲方式, 這個list, 只保存一個link的引用, 作為鏈表的頭, 然後通過這個頭.next, 得到第二個, 第二個.next得到第三個, 一次類推, 知道.next == null 的時候, 說明list結束.
那麼現在分兩種情況看:
1. 當當前鏈表裡面沒有元素的時候, 那麼就添加一個, 然後讓它的next = first, 也就是為null, 那麼鏈表在遍歷的時候, 訪問了第一個, 然後第一個.next == null, 鏈表就到頭了.
2.當當前鏈表裡面有元素的時候, 那麼因為方法叫做firstinsert, 也就是添加頭元素, 所以先聲明一個link = newlink, 然後讓newlink, 的next 指向之前list.first素, 那麼現在newlink就變成了第一個, 而之前那個變成了第二個, 然後再把newlink的引用賦給first, 這樣, 鏈表的頭就變成了newlink, 達到了first insert的目的.
first的引用就是我上面分析的兩種情況, 一種是沒有元素就是null, 另一種情況是有, 變成了第二個, 因為這個list要有結束的位置, 否則就無限長了, 結束的條件就是遍歷list的時候, 最後一個元素.next == null, 這樣list就停住了我大體畫個圖吧, 你看看:
第一種情況: 當隊列中沒有元素的時候
列表中什麼都沒有 : [ (head)null ]
有一個newlink {nl}
執行完newlink.next=first; {nl} -> null
執行完first=newlink; [ (head){nl} -> null ];
這樣list的頭就是newlist, 只有它一個元素.
第二中情況: 當隊列中有元素的時候:
假設當前頭元素為{oldhead}
[ (head){oldhead} -> {obj1} -> {obj2} ... {objn} -> null]
有一個newlink {nl}
執行完newlink.next=first; {nl} -> {oldhead}
執行完first=newlink; [ (head){nl} -> {oldhead} -> {obj1} -> {obj2} ... {objn} -> null]
這樣list的頭就是newlist, 而oldhead就變成了第二個元素, 後面的元素以此類推.
『拾』 Java數據結構與演算法
/*給出一組數:1,4,7,10,。。。,3N+1,n為正整數 找出下一個數和第十個數
* 寫出偽代碼和Java代碼 謝謝啦*/
public static String getNumber(int number){
//定義一個初始值0
判斷如果number為0或是負數
return "您輸入的不對請輸入正整數(除0意外的自然數)";
否則就進行運算
根據算式 3*(number-1)+1進行運算
返回運算結果
}
}
public static void main(String [] args){
列印輸出
}
/*給出一組數:1,4,7,10,。。。,3N+1,n為正整數 找出下一個數和第十個數
* 寫出偽代碼和Java代碼 謝謝啦*/
public static String getNumber(int number){
int result = 0;
if(number == 0 || number < 0){
return "您輸入的不對請輸入正整數(除0意外的自然數)";
}else{
result = 3*(number-1)+1;
return ""+result;
}
}
public static void main(String [] args){
System.out.println("第五項:"+Test1.getNumber(5));
System.out.println("第十項:"+Test1.getNumber(10));
}
希望對您有幫助