前几天去腾讯面试,让做一道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道腾讯的面试题,我给了我的答案,不知道正确否,欢迎点评~