分享一点今年的前端笔试题吧,看完之后觉得自己果然是技术渣
不定项选择
1.索引是存储引擎用于快速查找记录的一种数据结构,通过合理的使用数据库索引可以大大提高系统的访问性能,通过以下命令建立MySQL数据表Tbl_User
CREATE TABLE Tbl_User(
id int AUTO_INCREMENT PRIMARY KEY,
user_name varchar(30) NOT NULL,
sex bit(1) NOT NULL DEFAULT b'1',
city varchar(50) NOT NULL,
age int NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;
并建立以下MySQL索引:
ALTER TABLE Tbl_User ADD INDEX idx_user(user_name,city,age),请问下列哪些选项可以使用索引查询
A:SELECT * FROM Tbl_User WHERE user_name like ' %alice ' ;
B:SELECT * FROM Tbl_User WHERE city=' 深圳 ' AND age = ' 26 ';
2.请问进程间通信有以下哪几种实现方式?
A:套接字 B:消息队列 C: 信号量 D:共享内存 E:有名管道
3.DNS是应用层协议,它使用了哪些传输层协议?
A:TCP B:UDP C:DCCP D:SCTP
4.TCP建立连接需要三次握手,如果考虑优连接效率,你认为以下哪些方法是可行的?
A:服务端从SYN包中额外附带的字段判断是否为一个之前曾连接过的客户端,如果是则无需等待ACK即可开始发送数据
B:客户端收到SYN、ACK 时,等到有数据需要传输时,才连同数据一起把ACK发给服务端
C:在请求头中加入Connection:keen-alive,这样服务器就不会主动关闭连接
D:客户端每次发送请求之后,无需等待服务端回复确认即可继续发送
5.以下程序输出为
var a = 1;
function funcA() {
alert(a);
var a = 2;
alert(this.a);
}
funcA();
6。以下程序有错误,请找出来
const std:string& find(std::map& map,int i){
const auto it = map.find(i);
if(it == map.end()){
return "no found.";
}
it->second = "found ang change it.";
return it->second;
}
A:di2行const auto it 语法错误
B:第4行返回了临时对象的引用
C:第6行修改了const对象
D:第7行返回了临时对象的引用
7.以下关于线性结构,描述正确的是
A:链表的遍历复杂度高于数组的遍历复杂度
B:双端队列(deque)既可以完成FIFO操作,也能实现LIFO操作
C:数组的插入复杂度为O(n),而链表中具有同样复杂度的操作是查找
D:稀疏矩阵、串、二叉树都不是线性结构
8.已知一棵二叉树,其先序序列为EFHIGJ,中序序列为HFIEJG,则二叉树根节点的右孩子为(),该二叉树有几层
9.以下排序算法中事件复杂度为O(nlogn)的有
A:希尔排序
B:快速排序
C:堆排序
D:基数排序
E:桶排序
10.下列关于二叉树描述正确的有
A:二叉树的叶子节点在前序和后序遍历中的相对次序不变
B:所有结点只有左子树的二叉树,其中序和后序遍历的结果相同
C:一棵高度为k的满二叉树的结点总数为(2*k-1)
D:二叉树的度为2
11.N个高度不一样的人排成一列,并按1到N进行编号,其中对于Height [ i ] > Height [ j ] ( i < j ,且i,j 属于[1...N])情况,称之为逆序对,现假定当前的排队情况中有M个这样的逆序对,那如果只允许相邻的人相互交换位置最终消除所有的逆序对,需要多少次交换?
A:N(N-1)/2
B:M(M-1)/2
C:N
D:M
12.以下关于哈希表和哈希算法的表述,正确的是
A:哈希表的查找复杂度为O(1),所以用来排序比较快
B:哈希函数可以用来计算任意长度文件的摘要
C:处理哈希冲突的方法有:开放定址法、链表法等
D:为了保持哈希表的负载因子在一个合理范围内,通常需要对其进行rehash
再加一些总结吧
前端必问面试题
html:h5的新特性,localstorage、sessionstorage、cookie的区别,
css:css3新特性,盒子模型,box-sizing属性,position的各个属性,display的各个属性,flex布局,自适应布局(经常会问两边固定中间自适应,或者左边固定右边自适应),还有就是已知宽高的div和未知宽高的div的水平垂直居中方法(越多越好),浏览器兼容性,浮动问题(怎么使用,怎么解决问题,其实这个现在已经不推荐使用了,但是会问),
js:这个就多了,基本类型以及类型转换,值类型和引用类型,BOM和DOM,==和===的区别,闭包问题(场景,优缺点),ES6,跨域问题,原生js的DOM的各种节点操作(虽然现在已经很少写原生的DOM了,但是一定要知道),数组对象和Math对象的方法(基本可以完成大半的笔试编程题了,而且这两个对象平时用的太多了),还有字符串对象,排序(冒泡和快排一定要掌握吃透),原型和原型链,继承(至少会写一种方法),http协议,还有就是从输入url到页面加载发生了什么,一个完整的url地址包含什么,
数据结构:二叉树(重中之重),队列,链表,
设计模式:观察者模式(用的比较多吧),策略模式什么的,所有的设计模式中总要熟悉几个,可以拿得出手的那种(知道原理,会基本用法)
对了,数据结构和设计模式超级无敌重要,如果想进大厂的话,有一次印象很深的大厂笔试,全是数据结构上的队列、堆、树,没有一道其他的题目,从此数据结构在我心里占据了很重要的地位