分享几道前端面试题
一.谈谈对优化性能优化的认识?怎么优先加载?
1、减少http请求,合理设置 http缓存
2、使用缓存
3、启用压缩
4、css sprites
合并 css图片,减少请求数的又一个好办法。
5、lazyload images
6、css放在页面最上部,javascript放在页面最下面
7、异步请求callback(就是将一些行为样式提取出来,慢慢的加载信息的内容)
8、减少cookie传输
9、javascript代码优化 ( (1). dom (2). 慎用 with (3). 避免使用 eval和 function (4). 减少作用域链查找 (5). 数据访问 (6). 字符串拼接)
10、css选择符优化
cdn加速 反向代理
二、说说php和js的(或者相比其他语言)区别优势和特点
php:
特性:
(1). php 独特的语法混合了 c、java、perl 以及 php 自创新的语法。
(2). php可以比cgi或者perl更快速的执行动态网页——动态页面方面,与其他的语言相比,
php是将程序嵌入到html文档中去执行,执行效率比完全生成html标记的cgi要高许多;
php具有非常强大的功能,所有的cgi的功能php都能实现。
(3). php支持几乎所有流行的以及操作。
(4). 最重要的是php可以用c、c++进行程序的扩展!
优点:
(1)、运行在web服务器端:学会了php,web网站的大部分数据都是存储在服务器端的,php就是用来处理这些存储在服务器的数据。
(2)、跨平台:服务器可以是多种平台的服务器,比如linux、windows、unix
(3)、脚本语言:它是通过编写脚本,也就是一行行的计算机指令来指挥服务器来工作的
(4)、免费:免费使用。
js:特性:
(1)是一种解释性脚本语言(代码不进行预编译)。
(2)主要用来向html(标准通用标记语言下的一个应用)页面添加交互行为。
(3)可以直接嵌入html页面,但写成单独的js文件有利于结构和行为的分离。
(4)跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如windows、linux、mac、android、ios等)。
(5)基于对象。javascript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象
(6)弱类型语言,对使用的数据类型未做出严格的要求
五、缓存和预加载的区别是什么
缓存就是把请求过的数据缓存起来,下次请求的时候直接使用缓存内容,提高响应速度
预加载指的是提前把需要的内容加载完成,访问的时候可以提高响应效率,比如图片的预加载(可以提前加载一定数量的图片,
当用户访问图片的时候一般只看前几张,由于是预加载好的,所以速度比较快)
七、javascript中未初始化的变量和未定义的变量的区别
简单理解 变量未定义,就是根本没有var(声明)这个变量.
而变量未初始化,其实也就是变量根本没赋值.
例如:
就是给变量赋值,然后对变量进行操作
var a=2; //变量初始化
var b=3;