面試時考查:
Java基礎(chǔ)
邏輯思維
讀代碼能力
寫代碼能力(編程題)
算法題
學習過程中 要從網(wǎng)上找題刷題硅卢!
再看公司的需求 去實習看需求 再去學習更多的知識
有一項能力特別好 別人才相信你也可以其他做的好
比如面試時會考如何實現(xiàn)多繼承
答:借助內(nèi)部類
今天是Java基礎(chǔ)第一講
老師從java發(fā)展史講起:
面試會問垃圾回收機制
最好學習一些源碼 比如String源碼
拓展了解垃圾回收機制
Java基礎(chǔ)學完做個qq出來
web socket 和 http 兩個協(xié)議區(qū)別:
WebSocket是HTML5中的協(xié)議凸椿,支持持久連接盒齿;而Http協(xié)議不支持持久連接。
首先HTMl5指的是一系列新的API,或者說新規(guī)范绘搞,新技術(shù)耘眨。WebSocket是HTML5中新協(xié)議剂癌、新API.
Http協(xié)議本身只有1.0和1.1,也就是所謂的Keep-alive蚂夕,把多個Http請求合并為一個迅诬。
請參見:http://www.cnblogs.com/Herzog3/p/5088130.html
身邊的朋友 環(huán)境會決定你的高度
軟件工程 相關(guān)
靜態(tài) 動態(tài)用 static 關(guān)鍵字區(qū)別
全局變量和局部變量:
全局變量有默認初始值
局部變量沒有默認初始值,必須初始化双抽!
要看API文檔以了解常用類對象 這樣用的時候才能想起來
給兩個日期百框,判斷兩個日期相差多少天:
(應(yīng)用到新用戶送會員)
思考:
怎么判斷一個字符串是否是有限的IP地址
怎么把一個字符串中的所有d換為a
經(jīng)典問題總結(jié):
1 抽象和封裝的不同點:
答:
抽象和封裝是互補的概念。一方面牍汹,抽象關(guān)注對象的行為铐维。另一方面,封裝關(guān)注對象行為的細節(jié)慎菲。一般是通過隱藏對象內(nèi)部狀態(tài)信息做到封裝嫁蛇,因此,封裝可以看成是用來提供抽象的一種策略露该。
2 什么是Java虛擬機睬棚?
答:
Java虛擬機是一個可以執(zhí)行Java字節(jié)碼的虛擬機進程。Java源文件被編譯成能被Java虛擬機執(zhí)行的字節(jié)碼文件解幼。
3 JDK和JRE的區(qū)別是什么抑党?
答:
Java運行時環(huán)境(JRE)是將要執(zhí)行Java程序的Java虛擬機。它同時也包含了執(zhí)行applet需要的瀏覽器插件撵摆。Java開發(fā)工具包(JDK)是完整的Java軟件開發(fā)包底靠,包含了JRE,編譯器和其他的工具(比如:JavaDoc特铝,Java調(diào)試器)暑中,可以讓開發(fā)者開發(fā)、編譯鲫剿、執(zhí)行Java應(yīng)用程序鳄逾。
4 ”static”關(guān)鍵字是什么意思?Java中是否可以覆蓋(override)一個private或者是static的方法灵莲?
答:
“static”關(guān)鍵字表明一個成員變量或者是成員方法可以在沒有所屬的類的實例變量的情況下被訪問雕凹。
Java中static方法不能被覆蓋,因為方法覆蓋是基于運行時動態(tài)綁定的,而static方法是編譯時靜態(tài)綁定的请琳。static方法跟類的任何實例都不相關(guān)粱挡,所以概念上不適用。
5 是否可以在static環(huán)境中訪問非static變量俄精?
答:
static變量在Java中是屬于類的询筏,它在所有的實例中的值是一樣的。當類被Java虛擬機載入的時候竖慧,會對static變量進行初始化嫌套。如果你的代碼嘗試不用實例來訪問非static的變量,編譯器會報錯圾旨,因為這些變量還沒有被創(chuàng)建出來踱讨,還沒有跟任何實例關(guān)聯(lián)上。
老師給的Java面試題:
http://pan.baidu.com/s/1eRYMQIm
(老師給了答案后我在更新上傳答案doc文檔)
個人解答的其中部分招聘面試題:
(有錯誤請批評指正 感謝)
1 一天有個年輕人來到王老板的店里買了一件禮物砍的。這件禮物成本是18元痹筛,標價是21元。這個年輕人掏出100元要買這件禮物廓鞠,王老板當時沒有零錢帚稠,用那100元向街坊換了100元的零錢,找給年輕人79元床佳。 但是街坊后來發(fā)現(xiàn)那100元是假鈔滋早,王老板無奈還了街坊100元。請問王老板在這次交易中到底損失了多少錢?(按成本計算砌们,請寫出答案和推理過程)
答:
若不還100元 王老板賺 3 元 (21-18) 3-100=-97 所以賠97元
2 請寫出以下代碼的輸出結(jié)果
public class TestThree {
private void test(int param) {
switch (param) {
case 1:
System.out.println("Selected 1.");
case 2:
System.out.println("Selected 2.");
case 3:
System.out.println("Selected 3.");
default:
System.out.println("Default seleted.");
}
}
public static void main(String[] args) {
new TestThree().test(2);
}
}
結(jié)果:
Selected 2.
Selected 3.
Default seleted.
3 請寫出以下代碼的輸出結(jié)果
public class Test{
int a;
int b;
public void f(){
a = 0;
b = 0;
int [] c ={0};
g(b,c);
System.out.println(a+" "+b+" "+c[0]+" ");
}
public void g(int b,int[] c){
a=1;
b=1;
c[0]=1;
}
public static void main(String args){
Test obj = new Test();
obj.f();
}
}
結(jié)果:
1 0 1
分析:
a和b是全局變量 a=1好理解
b=0 是因為 g() 函數(shù)里面定義了局部變量b 導致函數(shù)的局部代碼塊中的 b=1 影響的是形參b (此情況下 全局b 不可見)
但數(shù)組傳入是的 引用(類似于C中的指針)杆麸,所以數(shù)組肯定會改變
4 編寫一個程序,產(chǎn)生ArrayIndexOutOfBoundsException異常浪感,并捕獲該異常昔头,在控制臺輸出異常信息。
public class ArrayException {
public static void main(String[] args) {
int[] arr = {1,2};
int i = 0;
try {
while( i < 3 ) {
System.out.println(arr[i]);
i++;
}
}catch(ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
System.out.println("數(shù)組越界異常");
}finally {
System.err.println("over");
}
}
}
輸出:
over
數(shù)組越界異常
5 現(xiàn)有100個人影兽,其中1個是人類减细,99個是僵尸,現(xiàn)在這個人類有抗僵尸能力赢笨,僵尸吃了可以變回人類(當然被吃的就死了),一個人類可以被兩個僵尸吃掉驮吱,請問最后可以有多少個人類存活茧妒?
public class test {
public static void main(String[] args) {
int sum = 100;
int man_num = 1;
int zom_num = 99;
while( 2*man_num <= zom_num ) {
sum = sum - man_num;
zom_num = zom_num - 2*man_num;
man_num *= 2;
}
int res = man_num - (zom_num+1)/2 + zom_num;
System.out.println("最后存活人類:"+res);
}
}
分析:
注意:
最后人數(shù)計算中犧牲人數(shù)計算方法 (zom_num+1)/2 處理是考慮上次僵尸個數(shù)為奇數(shù)情況 比如僵尸數(shù)為3 需要吃1.5個人 犧牲的人數(shù)為2