1.开场惯例--自我介绍
问候语+自我介绍+结语
2.冒泡排序
int[] array = {1,9,8,4,6,5,3,2,7};
for(int i = 0; i < array.length; i++){
for(int j = 0; j < array.length - i -1;j++){
if(array[j] > array[j + 1]){
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
3.线程和进程是什么、区别是什么
线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。另外,也正是因为共享资源,所以线程中执行时一般都要进行同步和互斥。总的来说,进程和线程的主要差别在于它们是不同的操作系统资源管理方式。
4.线程的run()和star()有什么区别
(1)通过调用Thread类的start()方法来启动一个线程,这时此线程是处于
就绪状态,并没有运行。
(2)然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程。
总的来说:
run()只是在当前线程中执行任务,而start才是真正生成thread,并放在cpu中调度。
5.队列和栈是什么、区别是什么
队列(Queue):是限定只能在表的一端进行插入和另一端删除操作的线性表
栈(Stack):是限定之能在表的一端进行插入和删除操作的线性表
队列和栈的规则
队列:先进先出
栈:先进后出
队列和栈的遍历数据速度
队列:基于地址指针进行遍历,而且可以从头部或者尾部进行遍历,但不能同时遍历,无需开辟空间,因为在遍历的过程中不影响数据结构,所以遍历速度要快
栈:只能从顶部取数据,也就是说最先进入栈底的,需要遍历整个栈才能取出来,遍历数据时需要微数据开辟临时空间,保持数据在遍历前的一致性
6.Java Web:
1> 谈一谈所知XSS攻击、CSRF相关问题
2> 防止SQL注入的方法
PreparedStatement
3> 301 302代表什么,区别是什么
暂时迁移和永久迁移
4> TCP/UDP的区别
首先TCP提供面向连接的服务,而UDP在传输数据之前不需要建立连接传输形式为字节流,UDP的传输是不可靠的,而TCP是具有传输可靠性的传输形式为数据报文段性能方面传输效率比UDP慢而且所需资源也多。
5> TCP三次握手和TCP断开连接(四次挥手)
三次握手...
四次挥手......
为什么建立连接是三次握手,关闭连接确是四次挥手呢?
建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。
而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。
7.计算机网络
IP/掩码
1> 1.45.4.67/27 掩码
2> 谈一谈ARP攻击
8.Linux常用的指令
9. 100层楼俩弹球的问题,问求哪层玻璃球刚好碎掉的问题的时间复杂度最小的方法
用二分法和分组查找的方法进行对比并说出自己的思路。
10. 你是通过什么样的方式学习Java语言的
根据自身情况来回答
个人感受:
总的来说整个面试过程还是很轻松的,虽然环境不太友好,但是面试官给我的感受是非常温和的,在我反向提问的时候面试官都给予了回答,并且是有内容的答复。