CVTE一面

 下午心酸的一面,看了网上面经不都是啥spring和redis吗???结果问了好多很基础的东西,答得不是很好,希望能过把二面再好好准备!

进去是一个很温柔的小哥哥!好评!

1.自我介绍然后到项目问题,记忆深刻的项目,为什么。

就答了一个实习做的项目,基本问的都是你自己的感受的多,多讲这些也不会深究,

 

2.TCP和UDP的区别,TCP的四次挥手,HTTP是用的TCP还是UDP?转发和重定位的区别,Session 和 Cookie 的区别

TCP和UDP区别,三次握手四次挥手:https://blog.csdn.net/qq_42447950/article/details/81329900

HTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。

转发和重定位的区别:https://blog.csdn.net/liubin5620/article/details/79922692

会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

区别:

  1. Cookie数据存放在客户的浏览器上,Session数据放在服务器上。
  2. Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗,如果主要考虑到安全应当使用加密的Cookie或者Session。
  3. Session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用Cookie。
  4. 单个Cookie在客户端的限制是4K,很多浏览器都限制一个站点最多保存20个Cookie。

session和cookie的区别:https://www.cnblogs.com/wupeixuan/p/8718116.html

3.数据库现场出题写数据库语句,然后问如何针对sql优化,知道索引吗,索引失效是什么?针对这条sql场景索引要建在哪里,针对其他场景索引建在哪里,为什么。char和varchar的区别,varchar(20)放两个字符进去,里面存的是什么,int(11)指的是什么

Q:给我的题目是一个student表,有id,name,classid,score,写出平均分大于90的班级

Q:如何优化这条sql的性能?索引失效是什么?

Explain关键字查看索引详解:https://www.cnblogs.com/tufujie/p/9413852.html

索引失效:https://blog.csdn.net/hehexiaoxia/article/details/54312130

Q:针对这个场景索引建在哪个字段好,why

Q:如果表中有几万条数据,要你做一个排行榜选出前十名同学,索引要建在哪,为什么,还有一个关于索引和order by的问题没太听懂问题

order by和索引:https://www.cnblogs.com/lxyit/p/9448491.html

Q:char和varchar的区别,varchar(20)放两个字符进去,里面存的是什么,int(11)指的是什么

CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。

int(M) M指示最大显示宽度。最大有效显示宽度是255。

补充:INT(M) ZEROFILL,加上ZEROFILL后M才表现出不同,比如 INT(3) ZEROFILL,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果INT(3)和INT(10)不加ZEROFILL,则它们没有什么区别.M不是用来限制INT列内保存值的范围的.int(M)的最大值和最小值与UNSIGNED有关。


4.Synchronize了解吗,现场写一种用法出来,修饰方法的不同?里面的参数可以是什么?

现场写了一个Singleton,类似这个


public class Singleton {  
    private volatile static Singleton singleton;  
    private Singleton (){}  
    public static Singleton getSingleton() {  
    if (singleton == null) {  
        synchronized (Singleton.class) {  
        if (singleton == null) {  
            singleton = new Singleton();  
        }  
        }  
    }  
    return singleton;  
    }  
}

如果有下面两种方法,我能够用线程A跑上面的方法,线程B跑下面的方法吗,为什么

public class Test{

synchronized static void a();

synchronized void b();

}

关于类锁和对象锁:https://blog.csdn.net/codeharvest/article/details/70649375

两个锁是互不影响的锁,一个锁住的是类的静态方法,由于静态方法是共享的,所以近似锁住类对象,叫类锁,对象锁只是对于对象内非静态方法起作用。

参数你可以把他看着是独一无二的钥匙(只有一把钥匙)、线程可以比作人、synchronized 关键字就是锁,synchronized 开始到结束当作一个屋子。
当第一个线程到来时就会拿起参数并带着它走进屋子,然后去做他自己想做的事。当其他线程来了只有干瞪眼了,因为钥匙只有一把已经被别人拿走了,他要做的就只有等到别人还回来。当第一个线程在屋子里玩够了,或事情做完了就会从后门出去。出去时那把钥匙会自己从第一个线程身上消失,并用土盾法再次出现在原来放他的位置。等待的线程看到钥匙回来了就又会像第一个线程一样拿起钥匙进屋。这样循环下去。在使用synchronized块时应注意,synchronized块只能使用对象作为它的参数。如果是简单类型的变量(如int、char、boolean等),不能使用synchronized来同步。锁住的范围就是锁对象里的东西。.

5.什么时候用排序算法(快排)效率会比较好

在分区时两个子分区最平衡时。
因为两个子分区大小不可能同时大于n/2,所以一个分区大小为n/2的下界,另一个分区大小为n/2的上界加1时,快速排序的运行速度最快。

6.面向对象的特性是什么,分别描述一下

java三大特性:https://blog.csdn.net/qq_43304572/article/details/82949989

你可能感兴趣的:(CVTE一面)