Java_1

1.在軟件開發過程中,採用不同的過程模型。也叫軟件生命週期模型。

增量模型

是把待開發的軟件系統模塊化,將每個模塊做爲一個增量組件,從而分批次分析、設計、編碼和測試這些增量組件。
優:人員分配靈活,剛開始不必投入大量人力;可先發布部分功能給客戶。
缺:並行開發可能會遭遇不能繼承的風險,軟件必須幾倍開放式的體系結構。

瀑布模型

瀑布模型要求軟件開發嚴格按照需求 ->分析->設計->編碼->測試的階段進行,每一個階段都可以定義明確的產出物和驗證準則.瀑布模型在每一個階段完成後都可以 組織相關的評審和驗證,只有在評審通過後才能夠進入到下一個階段.
優:大型軟件開發過程中人員的組織,管理,有利於軟件開發方法和工具的研究。
缺:開發過程一版都不可逆轉,很難按照該模型進行(需求不明確,用戶的使用環境不穩定)。

螺旋模型

遵從瀑布模型的開發過程,通過將瀑布模型的多個階段轉化到多個迭代過程中。
優:靈活
缺:需要具有相當豐富的風險評估經驗和專門知識;風險大

快速原型模型


參考:https://www.cnblogs.com/langtianya/p/4535756.html
https://blog.csdn.net/chesteralive/article/details/49403269

2.Java中值類型和引用類型

在這裏插入圖片描述

基礎數據類型的賦值是值傳遞,數據賦值,創建同值的新對象。
引用值類型的賦值是引用傳遞,傳遞的是對象的引用地址

3.遞歸

4. 比較"ABCD"與"DCBA" 字符串

比較的時候比的是ASCII碼,從第一位開始比,如果第一位能比較出誰大誰小則直接返回,若相等,比較下一個字符。

常見ASCII碼的大小規則,0-9<A-Z<a-z:
1)數字比字母要小。如 “7”<“F”
2)數字0比數字9要小,並按0到9順序遞增。如 “3”<“8”
3)字母A比字母Z要小,並按A到Z順序遞增。如“A”<“Z”
4)同個字母的大寫字母比小寫字母要小32。如“A”<“a”

二叉樹,小項堆,排序算法,哈夫曼樹
鏈表(線性單鏈表,雙向鏈表,線性鏈表,循環鏈表)
TCP/IP結構及協議分層
一趟結束後能夠確定一個元素的最終位置的排序方法有: 簡單選擇排序、快速排序、冒泡排序、堆排序

5.字符串有8個字符,那麼非空子串數爲8+7+…+2+1=8*9/2=36,加上一個空串,總共的子串數量爲37。

6. linux命令相關

-r 將文件系統安裝爲只讀。
-o 指定掛載文件系統時的選項
export 用於修改環境變量
env 用於創建環境變量

7.

1 、第一範式(1NF)
指數據庫表的每一列(即每個屬性)都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。簡而言之,第一範式就是無重複的列。
二維數據表且數據表中的列不可再分 強調原子性
2、 第二範式(2NF)
第二範式(2NF)要求數據庫表中的每個實例或行必須可以被唯一地區分。
第二範式(2NF)要求實體的屬性完全依賴於主關鍵字。
所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那麼這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關係。
簡而言之,第二範式就是非主屬性依賴於主關鍵字。
3 、第三範式(3NF)
在滿足第二範式的基礎上,切不存在傳遞函數依賴,那麼就是第三範式。
簡而言之,第三範式就是屬性不依賴於其它非主屬性。

8.SQL語法

left semi join 左內匹配
left outer join 左外匹配

聯合索引的最左前綴原理

MyISAM特性:
1:不支持事務、不具備AICD特性(原子性、一致性、分離性、永久性);
2:表級別鎖定形式(更新數據時鎖定整個表、這樣雖然可以讓鎖定的實現成本很小但是同時大大降低了其併發的性能);
3:讀寫相互阻塞(不僅會在寫入的時候阻塞讀取、還會在讀取的時候阻塞寫入、但是讀取不會阻塞讀取);
4:只會緩存索引(myisam通過key_buffer_size來設置緩存索引,提高訪問性能較少磁盤IO的壓力、但是隻緩存索引、不緩存數據);
5:讀取速度快、佔用資源比較少;
6:不支持外鍵約束、只支持全文檢索;
7:是MySQL5.5.5版本之前的默認存儲引擎;

DELETE和TRUNCATE TABLE 區別

9.在同一類中,代碼塊的執行順序

同一類中,首先靜態代碼塊在類加載的時候就執行了,並且只執行一次,不論是否new了對象;而構造代碼塊構造方法是在每次創建對象時都會被調用,並且構造代碼塊的執行次序優先於類構造函數

這裏插入一個相關問題:關於類的初始化問題 (結合第10點來看)
Java 語言使用 final 關鍵字來定義一個常量
**編譯期常量:**它的值在編譯期就可以確定的常量
運行時常量: 它在運行時才能確定它的值。
**對類的依賴性:**與類的創建有沒有關係。

編譯期常量不依賴類,不會引起類的初始化;而運行時 常量依賴類,會引起類的初始化。
編譯期常量會在編譯階段存入調用類的常量池,本質上並沒有直接引用到定義常量的類,因此不會觸發定義常量的類的初始化。
在這裏插入圖片描述

10.

String s1="abc"這種賦值方法經常用,會建立一個對象池,出現的第一個“abc”已經入池,當第二次出現這種語句時,就是池內的內容,所以“==”比較時,是同樣的內容,所以是true;第二種是用new來實例化()缺點是會產生垃圾,s3並沒有入池,所以是false,如果手動入池的話就是true。

11

用ClassLoader加載類,是不會導致類的初始化(也就是說不會執行方法).Class.forName(…)加載類,不但會將類加載,還會執行會執行類的初始化方法.

12 ArrayList 擴容

new ArrayList() 初始化大小爲0
調用add方法判斷數組是否爲空數組;若爲空數組則擴容爲10
此後每次擴容爲原先的1.5倍

13 Object類的方法

14 線程池

public class Main {
    public static void main(String[] args) {
        ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 15, TimeUnit.SECONDS,
                new ArrayBlockingQueue<Runnable>(5), new ThreadPoolExecutor.CallerRunsPolicy());
    }
}

前三個參數:核心線程有5個,最大線程數是10個,keepAliveTime是15s,如果線程池中的線程大於5,那麼超15s的空閒線程就會被結束,也就是說,一定會保持5個線程不會被結束。當所有任務完成後,會保持5個空閒的線程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章