一、項目經歷,項目流程圖,程序執行流程mysql
二、進程間通訊算法
進程通訊是指進程之間的信息交換。目前,高級通訊機制可歸結爲四大類:sql
1)共享存儲器系統Shared-Memery System數據庫
(1)基於共享數據結構的通訊方式數組
(2)基於共享存儲區的通訊方式服務器
2)管道(pipe)通訊系統。數據結構
所謂管道,是指用於鏈接一個讀進程和一個寫進程以實現它們之間通訊的一個共享文件。ide
3)信息傳遞系統(Message passing system)函數
(1)直接通訊方式。(也稱消息緩衝通訊)oop
(2)間接通訊方式。發送和接收經過共享中間實體的方式進行消息的發送和接收。(也稱信箱通訊)
4)客戶機-服務器系統(Client-Server system)
(1)套接字
(2)遠程過程調用
(3)遠程方法調用
三、new 與 malloc 區別
1)new 是C++中發操做符,malloc是C++/C語言的標準庫函數。
2)new不只能夠分配內存,還能夠調用類的構造函數,malloc只能分配內存,不能調用構造函數,不能進行初始化類成員的工做。
3)內存泄露對於new和malloc均可以檢查出來,new能夠指明哪一個文件哪一行,而malloc不能。
4)new能夠認爲是malloc加構造函數的執行,new出來的指針是直接帶類型信息的,而mallloc返回的是void指針。
四、TCP三次握手鍊接與斷開
A向B發出請求,主動打開鏈接,B被動打開鏈接。
1)A向B發出鏈接請求報文段,這時首部中的同部位SYN=1,同時選擇一個初始序列號seq=x;
2)B收到哦鏈接請求報文段後,如贊成創建鏈接,則向A發出確認,在報文段中把SYN和ACK都置爲1,確認號是ack=x+1,同時也爲本身選擇一個初始序號seq=y;
3)A收到B的確認後,再向B發出確認。將報文段中的ACK置爲1,確認號ack=y+1,而本身的序號爲seq=x+1.
A向其TCP發出鏈接釋放報文段,並中止再發送數據,主動關閉TCP鏈接。
1)A把釋放報文段首部的終止控制位FIN置爲1,序號seq=u;
2)B收到鏈接釋放報文段後即發出確認,確認號是ack=u+1,而這個報文段本身的序號是v,這時B進入關閉等待狀態。A接收到B發的確認後,進入終止等待2狀態;
3)若B已經沒有要向A發出的數據,則B發出鏈接數據報文,將FIN置爲1,ACK=1,B的序號爲seq=w。確認號爲ack=u+1;
4)A收到B的鏈接釋放報文後,發出確認,置ACK爲1,本身的序號爲seq=u+1,確認號ack=u+1.
五、算法鏈表,判斷單項鍊表是否存在環
bool I***itsLoop(slist * head) { slist * slow = head , * fast = head; while ( fast && fast -> next ) { slow = slow -> next; fast = fast -> next -> next; if ( slow == fast ) break ; } return ! (fast == NULL || fast -> next == NULL); }
六、LinkedList 和ArrayList 的區別
(1)ArrayList是基於動態數組的數據結構,LinkedList是基於鏈表的數據結構。
(2)對於隨機訪問get和set,ArrayList更優於LinkedList,由於LinkedList要移動指針。
(3)對於增刪操做add和remove,LinkedLink比較佔優點,由於ArrayList要移動數據。
七、數組,存儲一到一百,少了一個,亂序,找出缺乏的。(使用異或)來自http://blog.csdn.net/yangcs2009/article/details/38384657
(1)求和-容易溢出
Sum=1+2+...+N=(N+1)N/2,而後遍歷數列每次從S1中減去當前的數字,最後剩下的數字就是所求。
爲了防止溢出咱們能夠每次在S1大於必定的數字後,就去減,而後繼續求和,再大於就繼續減,以此類推。
public int find_Miss_Number_By_Sum(int array[], int n) { int sum = 0; if (array.length != n - 1) throw new IllegalArgumentException("數組內的天然數目少於n-1"); for (int i : array) { sum += i; } return n * (n + 1) / 2 - sum; }
(2)異或^
Y=1^2^3...^N,而後遍歷數列每次異或當前的數字,最後剩下的就是要求的數字
任何數異或本身都等於0,任何數異或0都等於他本身
public int find_Miss_Number_By_XOR(int array[], int n) { int result = 0; if (array.length != n - 1) throw new IllegalArgumentException("數組內的天然數目少於n-1"); for (int i = 0; i < array.length; i++) { result = result ^ array[i]; } for (int i = 0; i < n; i++) { result=result^(i+1); } return result; }
(3)O(N)時間的移動-排序 (此方法是缺乏K個數都適用)
將a[i]移動到b[a[i]],使得數組有序,而後找出空着的位置
public int find_Miss_Number_By_Sort(int array[], int n) { int result = 0; if (array.length != n - 1) throw new IllegalArgumentException("數組內的天然數目少於n-1"); int b[] = new int[n]; for (int i = 0; i < array.length; i++) { b[array[i] - 1] = array[i]; } for (int i = 0; i < b.length; i++) { if (b[i] == 0) { result = i + 1; break; } } return result; }
import junit.framework.TestCase; public class Find_Miss_Numbers_By_Move extends TestCase { // 1-N的天然數中,少了一個,找出這個數 // 方法:將a[i]移動到a[a[i]],使得數組有序,而後找出空着的位置 public void find_Miss_Number_By_Move(int array[], int n) { int b[] = new int[n]; for (int i : array) { b[i - 1] = i; } System.out.print("數組的元素爲:"); for (int j : b) { if (j != 0) { System.out.print(j + "、"); } } System.out.println(); System.out.print("缺乏的數爲:"); for (int k = 0; k < b.length; k++) { if (b[k] == 0) { System.out.print(k + 1 + "、"); } } } public void test() { int a[] = { 1, 2, 4, 7, 8, 9 }; find_Miss_Number_By_Move(a, 9); } }
八、瞭解B+樹嗎?
九、對Spring瞭解嗎?
十、學過算法,解釋一些動態規則?
車間裝配線調度問題做爲例子。
十一、與數據庫鏈接的步驟:
1)加載驅動程序
Class.forname("com.microsoft.sqlserver.jdbc.SQLServerDriver");//SQLServer 2000
2)建立數據庫URL
String url = "jdbc:mysql"; //localhost:3306/myDB
String user = "MyUserName";
String password = "MYPWD";
3)創建鏈接
Connection conn = DriverManager.getConnection(url,user,password);
4)關閉鏈接
stmt.close();//有訪問語句即須要
conn.close();
在4)以前能夠增長數據訪問語句
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuert("SELECT *FROM student");