前端学习笔记

百度笔试题

1、关于链表的说法错误的是:
前端学习笔记_第1张图片
注意,是先将待插入节点的指针指向头结点指向的节点

2、关于队列的说法正确的是:
前端学习笔记_第2张图片A:先送值到到队尾元素再将队尾指针加1
C:设置标志flag,当front == rear且flag=0时为队空,当front == rear且flag=1时为队满(flag必须存在),题目仅仅设头=尾可能存在满或空两种情况
D:栈顶元素flag为0时,出队时指针按照顺时针方向进1

     循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此,无法通过条件frontrear来判别队列是"空"还是"满"。
解决这个问题的方法至少有两种:
① 另设一布尔变量以区别队列的空和满;
②另一种方式就是数据结构常用的: 队满时:(rear+1)%n
front,n为队列长度(所用数组大小),由于rear,front均为所用空间的指针,循环只是逻辑上的循环,所以需要求余运算。如图情况,队已满,但是rear(5)+1=6!=front(0),对空间长度求余,作用就在此6%6=0=front(0)。

类型定义采用环状模型来实现队列,各数据成员的意义如下:
front指定队首位置,删除一个元素就将front顺时针移动一位;
rear指向元素要插入的位置,插入一个元素就将rear顺时针移动一位;
count存放队列中元素的个数,当count等于MaxQSize时,不可再向队列中插入元素。
队空:count=0
队满:count=MaxQSize

3、下列关于栈和队列的应用说法错误的是()
前端学习笔记_第3张图片abd为何正确:
a:进制的转换和表达式求值可以利用栈特性处理:比较两个运算符的优先级,然后根据优先级来决定是进行计算还是存入栈中
b:该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰,该算法简单,只需把一个进程已调入内存的页面按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。
d: 用栈模拟递归,就是先将n入栈,不断的将未知元素入栈,直到取到已知的值的时候,出栈进行运算

4、textarea标签的属性:
前端学习笔记_第4张图片
5、link和@import区别说法错误的是()
前端学习笔记_第5张图片6、如果子元素都为浮动,不能解决父类高度塌陷问题的是()
前端学习笔记_第6张图片7、浮动(float)、固定定位(fixed)和绝对定位(absolute)都会使元素脱离文档流
8、
前端学习笔记_第7张图片前端学习笔记_第8张图片
似乎 ( ) 和 ?:的作用会“抵消”
9、下列哪个语句不能在Node环境中直接运行

前端学习笔记_第9张图片
10、 node内置模块

  • fs模块就是文件系统模块,负责读写文件
  • stream是Node.js提供的又一个仅在服务区端可用的模块,目的是支持“流”这种数据结构
  • http模块
  • path模块

11、以下哪些项目不是基于Node构建的
前端学习笔记_第10张图片
做题的智慧:node 叫node.js ,而nw.js后缀一样,推测是平级的

12、
manifest 标签作用:应用缓存资源清单
前端学习笔记_第11张图片13、
前端学习笔记_第12张图片14、

(function(){
var a = b = 100;
})();
console.log(typeof a);
console.log(typeof b);

立即执行函数是一个块级作用域,所以我们在window全局环境下是访问不到里面的变量和方法的,因为var a = b =100;相当于 b = 100;var a = b;因为b没有通过var声明,所以b是一个全局属性,我们可以在全局环境下通过window.b访问到,所以typeof(a)为undefined,typeof(b)为number

15、

var res=null instanceof Object;
console.log(res);
代码输出是? //false

typeof null // object
但是null 并不是object的实例,也就是没有 .toString 等方法

16、

var strNumber = '200';
var intNumber = 100;
console.log(strNumber + intNumber);
console.log(strNumber - intNumber);
console.log(strNumber / intNumber);
//输出结果是:200100,100,2

前端学习笔记_第13张图片
17
下面哪些是javascript中document的方法?
前端学习笔记_第14张图片
18、关于页面加载过程,以下描述正确的有哪些?
前端学习笔记_第15张图片
19、

var account = {
    phone: "1234567",
    getPhone: function() {
        return this.phone;
    }
};
var mycount = account.getPhone;
console.log(account.getPhone());
console.log(mycount());
//输出结果是:1234567,undefined

第一个打印 主体是account对象,所以this指向account对象,打印1234567
第二个打印 主体是window, 所以this指向window, 全局下没有phone 所以打印undefined

20:面向对象主要特点的是:抽象,封装,继承,多态

21、
前端学习笔记_第16张图片

2、以下Javascript代码执行后的输出结果依次是:

   console.log(typeof undefined == typeof NULL);//true
   //返回结果都是 undefined 注意,NULL不等于 null 只是一个未经声明的变量,所以是 undefined
    console.log(typeof function () {} == typeof class {});//true
    //返回结果都是 function

3、以下Javascript代码执行后的输出结果依次是:()

   var tmp = {};
    var A = function() {};
    A.prototype = tmp;

    var a = new A();
    A.prototype = {};

    var b = Object.create(tmp);
    b.constructor = A.constructor;

    console.log(a instanceof A); //false
    console.log(b instanceof A); //false

因为在构造实例a之前,a的隐式原型指向tmp,但是在实例了a之后,a的隐式原型依旧指向tmp,但是A.prototype已经改变。
instanceof 操作符的原理:
左侧对象:A,搜寻他自身的隐式原型。
右侧对象:B,则是返回他的prototype属性

a.proto = tmp
A.prototype = {}
所以不相等

同理,第二个也如此搜索

a.proto = tmp
A.prototype = {}
前端学习笔记_第17张图片4、以下关于闭包的描述哪些是正确的:
前端学习笔记_第18张图片5、对以下Javascript代码运行结果的描述错误的是:()

    var a = {},
        b = { key: 'b' },
        c = { key: 'c' };

    a[b] = 123;
    a[c] = 456;

前端学习笔记_第19张图片前端学习笔记_第20张图片
前端学习笔记_第21张图片
对象添加属性有两种方式 第一种点语法,如 obj.a=1;
第二种[]语法,如 var a = ‘hello’, obj[a] = ‘Joe’ ,
此时访问obj.hello可以得到’Joe’ 。题目传入的是一个对象,所以会隐式调用对象的toString方法,把对象转化为字符串 。执行 a[b] = 123 时 , a对象里是这样的 { ‘[object Object]’ : 123 } 。
同理, a[c] = 456 , 把[object Object]重新赋值 。所以 a对象只有一个属性; 输出a[b] 相当于输出a的[object Object]属性,得到345; a[a]同样得到456;

首先,a[b], b其实调用了toString()方法,注意不是valueOf方法. 由于任何对象调用默认的toString方法,输出的结果都是
“[object Object]”

obj[x]相当于obj在内存中申请了一块空间用来存储变量属性,所以obj[a],obj[b]…的内存地址都是指向同一块内存的,所以不管是obj[]什么,只要是[]里面的都会指向同一个内存地址,重复赋值会覆盖之前的。

6、关于web表单登录中用到的图形验证码的实现,以下做法不正确的有
前端学习笔记_第22张图片放在浏览器验证太不安全了,需要在服务器验证

7、以下哪个算法可以判断一个有向图中是否含有回路?
广度优先遍历 拓扑排序 求最短路径 求关键路径

8、在快速排序、冒泡排序、堆排序、归并排序、插入排序这五种排序算法中,属于稳定排序的有:冒泡排序、归并排序、插入排序

9、Html5重新提供了在客户端保存数据的功能Web Storage,分别是 sessinStorage、localState

10、下面代码获取 input 节点的正确方法是( )

<form class="file" name="upload">
<input id="file" name="file" class="file"/>
form>

前端学习笔记_第23张图片
看清题目选项,className 是 选择 name 属性

11、Javascript基本数据类型:5种,String null undefined number Boolean
Javascript原始数据类型:7种:String null undefined number Boolean Object symbol

12、以下哪些方法可以优化滚动性能:
前端学习笔记_第24张图片
13、(有赞) 为什么通常情况下增加内存可以提高系统性能?
前端学习笔记_第25张图片14、以下哪些数据结构不是二叉树?
前端学习笔记_第26张图片
红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。
区间树是一种对动态集合进行维护的红黑树。

B树:适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)
前端学习笔记_第27张图片

一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。它或者是空树,或者是满足下列性质的树:
1、根结点至少有两个子女;
2、每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <= j <= m - 1;
3、除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数 k 满足:┌m/2┐ <= k <= m ;
4、所有的叶子结点都位于同一层。
在B-树中,每个结点中关键字从小到大排列,并且当该结点的孩子是非叶子结点时,该k-1个关键字正好是k个孩子包含的关键字的值域的分划。
因为叶子结点不包含关键字,所以可以把叶子结点看成在树里实际上并不存在外部结点,指向这些外部结点的指针为空,叶子结点的数目正好等于树中所包含的关键字总个数加1。
B-树中的一个包含n个关键字,n+1个指针的结点的一般形式为: (n,P0,K1,P1,K2,P2,…,Kn,Pn)
其中,Ki为关键字,K1

腾讯

前端学习笔记_第28张图片

JS 中值的类型分为原始值类型和对象类型。原始值类型包括 number, string, boolean, null 和 undefined;对象类型即 object。首先原始值类型它就不是对象。
另外,要注意 ‘hello’ 和 new String(‘hello’) 的区别,前者是字符串字面值,属于原始类型,而后者是对象。用 typeof 运算符返回的值也是完全不一样的:

typeof ‘hello’; // ‘string’
typeof new String(‘hello’); // ‘object’
之所以很多人分不清字符串字面值和 String 对象,归根结底就是 JS 的语法对你们太过纵容了。当执行 ‘hello’.length 时,发现可以意料之中的返回 5,你们就觉得 ‘hello’ 就是 String 对象,不然它怎么会有 String 对象的属性。其实,这是由于 JS 在执行到这条语句的时候,内部将 ‘hello’ 包装成了一个 String 对象,执行完后,再把这个对象丢弃了,这种语法叫做 “装箱”,在其他面向对象语言里也有(如 C#)。不要认为 JS 帮你装箱了,你就可以在写代码的时候不分箱里箱外了!

常见的浏览器存储技术有
前端学习笔记_第29张图片

有时需要将网页中的一些数据保存在浏览器端,这样做的好处是,当下次访问页面时,不需要再次向服务器请求数据,直接就可以从本地读取数据。目前常用的有以下几种方法:
cookie
cookie会随着每次HTTP请求头信息一起发送,无形中增加了网络流量,另外,cookie能存储的数据容量有限,根据浏览器类型不同而不同,IE6大约只能存储2K。
Flash ShareObject
这种方式能能解决上面提到的cookie存储的两个弊端,而且能够跨浏览器,应该说是目前最好的本地存储方案。不过,需要在页面中插入一个Flash,当浏览器没有安装Flash控件时就不能用了。所幸的是,没有安装Flash的用户极少。
缺点:需要安装Flash插件。
Google Gear
Google开发出的一种本地存储技术。
缺点:需要安装Gear组件。
userData
IE浏览器可以使用userData来存储数据,容量可达到640K,这种方案是很可靠的,不需要安装额外的插件。缺点:它仅在IE下有效。
sessionStorage
使用于Firefox2+的火狐浏览器,用这种方式存储的数据仅窗口级别有效,同一个窗口(或者Tab)页面刷新或者跳转,都能获取到本地存储的数据,当新开窗口或者页面时,原来的数据就失效了。
缺点:IE不支持、不能实现数据的持久保存。
globalStorage
使用于Firefox2+的火狐浏览器,类似于IE的userData。
1 //赋值 2 globalStorage[location.hostname][‘name’] = ‘tugai’; 3 //读取 4 globalStorage[location.hostname][‘name’]; 5 //删除 6 globalStorage[location.hostname].removeItem(‘name’);
缺点:IE不支持。
localStorage
localStorage是Web Storage互联网存储规范中的一部分,现在在Firefox 3.5、Safari 4和IE8中得到支持。
缺点:低版本浏览器不支持。
结论:
Flash shareobject是不错的选择,如果你不想在页面上嵌入Flash,可以结合使用userData(IE6+)和globalStorage(Firefox2+)和localStorage(chrome3+)实现跨浏览器。

前端学习笔记_第30张图片
前端学习笔记_第31张图片

前端学习笔记_第32张图片

前端学习笔记_第33张图片

前端学习笔记_第34张图片

前端学习笔记_第35张图片

嵌入在HTML文档中的图像格式有哪些,都有些什么特点?
前端学习笔记_第36张图片

前端学习笔记_第37张图片

CSS3新增属性用法整理:
1、box-shadow(阴影效果)
2、border-color(为边框设置多种颜色)
3、border-image(图片边框)
4、text-shadow(文本阴影)
5、text-overflow(文本截断)
6、word-wrap(自动换行)
7、border-radius(圆角边框)
8、opacity(透明度)
9、box-sizing(控制盒模型的组成模式)
10、resize(元素缩放)
11、outline(外边框)
12、background-size(指定背景图片尺寸)
13、background-origin(指定背景图片从哪里开始显示)
14、background-clip(指定背景图片从什么位置开始裁剪)
15、background(为一个元素指定多个背景)
16、hsl(通过色调、饱和度、亮度来指定颜色颜色值)
17、hsla(在hsl的基础上增加透明度设置)
18、rgba(基于rgb设置颜色,a设置透明度)

问一份标准的HTML文档有哪几个必须的HTML标签?
前端学习笔记_第38张图片

你可能感兴趣的:(前端学习笔记)