程式設計師面試的一些知識點(二)
1.一個好的設計所具備的特徵有哪些?全面考慮,元件獨立,容錯機制,異常處理。高內聚,低耦合。
2.測試全面指的是:單元測試,整合測試,系統測試(效能測試,安全測試,易用性測試,相容性測試)。
3.將記憶體地址編碼擴大到外圍裝置上的編碼方式為?暫時不會
4浮點運算指令屬於算術運算指令。(實際上 浮點指令系統分為五類:資料傳送類、算術運算類、超越函式類、比較類、環境及系統控制類。)
5.public class test {
public static void main(String[] args) {
String s1 = "hello";
if(s1=="hello")
{
System.out.println("s1=\"hello\"");
}
else
{
System.out.println("s1!=hello");
}
}
}的結果 s1="hello"
6.在mvc中,用jsp做表現層V,用servlet來控制器C,而用javaBean做成M,也就是資料模型。
如果加上EJB,就把它放在M這一塊上,也就是它其實也是javabean,只不過是一種極為特殊的Javabean,是企業Bean。
7.public static void main(String[] args) {
Runnable runner = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.print("foo");
}
};
Thread t = new Thread(runner);
t.run();
System.out.println("bar");
}
結果是foobar
8.0.6332的資料型別是double,小數預設是double
9.燒一根不均勻的繩子需要一小時,如何獲得半小時。如果有多根這樣的繩子,如何獲得一小時十五分鐘。
第一個,首先對摺,同時點燃非對摺位置的兩個線頭,燒完的時間就是半小時。第二個用三根繩子第一條兩頭同時點燃,第二條只點一頭等第一條繩子燒完時,(此時已過半小時)馬上將第二條繩子(此時繩子壽命還可以燒半小時)的沒點著的一端也點著.等第二條繩子燒完時,(原本半小時,點了兩頭只能燒15分鐘)馬上將第三條繩子的兩端點著,等第三條繩子燒完時,(又過了半小時),總共1小時15分鐘.
10.一個優秀的設計,如何進行分解或者是模組化的過程
這個不知道,我個人的理解是通過功能劃分模組,來將設計模組化。
11.對於敏捷開發,你認為他的好處在哪裡
敏捷開發以使用者的需求進化為核心,採用迭代、循序漸進的方法進行軟體開發。在敏捷開發中,軟體專案在構建初期被切分成多個子專案,各個子專案的成果都經過測試,具備可視、可整合和可執行使用的特徵。換言之,就是把一個大專案分為多個相互聯絡,但也可獨立執行的小專案,並分別完成,在此過程中軟體一直處於可使用狀態。
最直觀的好處是專案進入實質性開發開發很快,迭代週期也不長,客戶可以很快看到一個基線架構版的產品,這樣能比較好地改善使用者滿意度
12.如何實現執行緒安全的hashMap
方法一:通過Collections.synchronizedMap()返回一個新的Map,這個新的map就是執行緒安全的. 這個要求大家習慣基於介面程式設計,因為返回的並不是HashMap,而是一個Map的實現.
方法二:重新改寫了HashMap,具體的可以檢視java.util.concurrent.ConcurrentHashMap. 這個方法比方法一有了很大的改進.
13.java應用伺服器有哪些?寫出三種以上
Tomcat 伺服器 Resin 伺服器 JBoss伺服器 WebSphere 伺服器 WebLogic 伺服器
14.程序與執行緒的區別
程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位.
執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源.
程序和執行緒的主要差別在於它們是不同的作業系統資源管理方式。程序有獨立的地址空間,一個程序崩潰後,在保護模式下不會對其它程序產生影響,而執行緒只是一個程序中的不同執行路徑。執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的地址空間,一個執行緒死掉就等於整個程序死掉,所以多程序的程式要比多執行緒的程式健壯,但在程序切換時,耗費資源較大,效率要差一些。
簡而言之,一個程式至少有一個程序,一個程序至少有一個執行緒.執行緒的劃分尺度小於程序,使得多執行緒程式的併發性高。另外,程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。
執行緒在執行過程中與程序還是有區別的。每個獨立的執行緒有一個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現程序的排程和管理以及資源分配。這就是程序和執行緒的重要區別。(轉自 http://blog.csdn.net/yaosiming2011/article/details/44280797,如有侵權,請留言,抱歉了,只是學術使用,看到留言後,我會立刻刪除)。