10道腾讯的Java面试题

1、说几种常见的攻击方式及预防手段。
XSS/CSRF/DDOS具体参考之前的文章。

2、http1.x和http2.x的区别。
http2.0增加多路复用、二进制分帧、首部压缩、服务器推送。

3、mysql查询语句怎么做性能分析。
使用explain或者profile命令,具体参考之前的文章。

4、你知道哪几种排序算法?
冒泡、选择、插入、希尔、快速、堆、归并、桶排序。

5、HashMap和HashTable的区别,并说明其底层实现数据结构。
HashMap非线程安全,HashTable线程安全,具体参考之间的文章。

6、HashMap满了之后怎么扩容?
loadfactor为扩容因子,当数据容量超过最大容量*loadfactor时容量自动扩大2倍,并将当前的数据重新放入新的hashmap中,所以初始的定义大小为2^n的大小最佳。

7、Linux中远程传输文件有什么方式?
SCP、FTP等。

8、说说Java中异常的分类。
Throwable子类Exception、Error。

9、 TCP和UDP的区别,TCP为什么是三次握手,不是两次。
1.基于连接与无连接
2.TCP要求系统资源较多,UDP较少。
3.UDP程序结构较简单。
4.流模式(TCP)与数据报模式(UDP)。
5.TCP保证数据正确性,UDP可能丢包。
6.TCP保证数据顺序,UDP不保证。
为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误,即重要的事情说三遍

10、 说说数据库设计的三范式,可以违反三范式吗?
第一范式,又称1NF,它指的是在一个应用中的数据都可以组织成由行和列的表格形式,且表格的任意一个行列交叉点即单元格,都不可再划分为行和列的形式,实际上任意一张表格都满足1NF;
第二范式,又称2NF,它指的是在满足1NF的基础上,一张数据表中的任何非主键字段都全部依赖于主键字段,没有任何非主键字段只依赖于主键字段的一部分。即,可以由主键字段来唯一的确定一条记录。比如学号+课程号的联合主键,可以唯一的确定某个成绩是哪个学员的哪门课的成绩,缺少学号或者缺少课程号,都不能确定成绩的意义。
第三范式,又称3NF,它是指在满足2NF的基础上,数据表的任何非主键字段之间都不产生函数依赖,即非主键字段之间没有依赖关系,全部只依赖于主键字段。例如将学员姓名和所属班级名称放在同一张表中是不科学的,因为学员依赖于班级,可将学员信息和班级信息单独存放,以满足3NF。 某些业务设计可以违反三范式。

你可能感兴趣的:(10道腾讯的Java面试题)