一、项目经历,项目流程图,程序执行流程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");