考试题
This commit is contained in:
512
考试/完成情况/前端js综合水平测试.md
Normal file
512
考试/完成情况/前端js综合水平测试.md
Normal file
@@ -0,0 +1,512 @@
|
||||
# web前端javascript综合水平测试 178
|
||||
|
||||
## 填空
|
||||
1. javascript 由 ECMAscript , DOM , BOM ,三部分组成,简单介绍一下这三部分 5
|
||||
|
||||
ECMAscript: javascript的语言规范, 包括:语法,类型,语句等等
|
||||
|
||||
DOM:文档对象模型,指的是html页面上的标签
|
||||
|
||||
BOM :即浏览器对象模型,是浏览器提供的接口
|
||||
|
||||
2. 检测数据类型的方式有 typeof , instanceof , Object.prototype.toString.call() , 三种方式什么区别 4
|
||||
|
||||
typeof: 原始值数据类型直接返回(null返回Object) , 引用值除了function 返回的是function 其他的引用值返回的是 object
|
||||
|
||||
instanceof :能检测引用值,原始值不行
|
||||
|
||||
Object.prototype.toString.call() 都可以检测
|
||||
|
||||
3. 检测NaN的数据类型结果为 [object Number] 5
|
||||
|
||||
4. js中 对象转json的方法为 JSON.stringify() , json格式转对象的方法为 JSON.parse() 5
|
||||
|
||||
5. js 浏览器对象模型包括 window , location , screen , navigator , history ,五部份 分别介绍一下这5部分 5
|
||||
|
||||
window: 浏览器的窗口
|
||||
|
||||
location:浏览器当前url信息
|
||||
|
||||
screen:客户端屏幕信息
|
||||
|
||||
navigator:浏览器本身信息
|
||||
|
||||
history:记录历史信息
|
||||
|
||||
6. var a=1;console.log(a++) 运行的结果为: 1 5
|
||||
|
||||
js运算符的优先级 优先级从高到低依次是:(); 一元加减 ;求幂 ; *,/ ; +,- ; = ; 4
|
||||
|
||||
7. js设置属性和属性值的方法为: object.setAttribute(attribute,value) 5
|
||||
|
||||
8. 五大主流浏览器及内核 Chrome:Webkit/blink; Safari:Webkit; IE:trident; FireFox:gecko; Opera: presto 5
|
||||
|
||||
9. jq ajax基本结构及解释 5
|
||||
|
||||
$.ajax({
|
||||
url: "address", // 网络地址
|
||||
data:obj, //传输数据
|
||||
type:"GET", //传输方法
|
||||
dataType:"json", //数据类型
|
||||
success: function (res) { //成功返回的函数方法
|
||||
console.log(res)
|
||||
}
|
||||
});
|
||||
|
||||
10. 本地缓存的增删改查 5
|
||||
|
||||
增:localStorage.setItem(key, obj);
|
||||
|
||||
删:localStorage.removeItem(key);
|
||||
|
||||
改:localStorage.setItem(key, obj);
|
||||
|
||||
查:localStorage.getItem(key);
|
||||
|
||||
11. jq选择器列举 4
|
||||
|
||||
$(".class") $("p") $("#id") $("ul li:first") $("p[target = "xxx"]")
|
||||
## 指出下面代码运行结果并分析其执行过程
|
||||
|
||||
1 . 10
|
||||
|
||||
```
|
||||
function a(n) {
|
||||
if (n <= 1) {
|
||||
return 1
|
||||
} else {
|
||||
return n * a(n - 1)
|
||||
}
|
||||
}
|
||||
console.log(a(5)) //120 调用a函数递归5*4*3*2*1=120
|
||||
|
||||
var cheng=a //把函数a赋给cheng
|
||||
a=null //a的值改为null
|
||||
console.log(cheng(5)) //执行cheng时return的a找不到,故错误Error: a is not a function
|
||||
|
||||
```
|
||||
2 10
|
||||
|
||||
```
|
||||
function C1(name) {
|
||||
if (name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
|
||||
function C2(name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
function C3(name) {
|
||||
this.name = name || 'join';
|
||||
}
|
||||
//c1/2/3的原型的name为tom
|
||||
C1.prototype.name = 'Tom';//调用时没有name传值,if里的语句不调用,故找原型的name为tom
|
||||
C2.prototype.name = 'Tom';//调用时没有name传值,故this.name为undefined
|
||||
C3.prototype.name = 'Tom';//调用时没有name传值,故name为false||'join'这个true,||返回第一个真值,故this.name为join
|
||||
alert((new C1().name) + (new C2().name) + (new C3().name));
|
||||
//Tomundefinedjoin
|
||||
```
|
||||
|
||||
3 10
|
||||
|
||||
```
|
||||
function fn()
|
||||
{
|
||||
this.user = '追梦子';
|
||||
var obj={user:"momo"}
|
||||
return {};
|
||||
}
|
||||
var a = new fn;
|
||||
console.log(a.user); //undefined
|
||||
//构造函数中的this与被创建的新对象a绑定,当函数return的值为对象时,this就指向这个被return的对象,对象里为空故.user为undefined
|
||||
|
||||
```
|
||||
|
||||
4 10
|
||||
|
||||
```
|
||||
window.color = 'red';
|
||||
document.color = 'yellow';
|
||||
|
||||
var s1 = {color: 'blue' };
|
||||
function changeColor(){
|
||||
console.log(this.color);
|
||||
}
|
||||
|
||||
changeColor.call(); //red 默认window借用changeColor方法输出this.color及window的颜色red
|
||||
changeColor.call(window); //red 同上
|
||||
changeColor.call(document); //yellow document借用changeColor方法输出document.color及document的颜色yellow
|
||||
changeColor.call(this); //red this默认是window的故同window
|
||||
changeColor.call(s1); //blue s1借用changeColor方法输出s1.color及s1的颜色blue
|
||||
|
||||
|
||||
```
|
||||
|
||||
## 简答题
|
||||
1. 说明call,apply,bind 的区别几个 10
|
||||
|
||||
call参数一个个传参;
|
||||
|
||||
apply 参数放到一个数组传参;
|
||||
|
||||
bind是返回对应函数,便于稍后调用,apply、call是立即调用;
|
||||
|
||||
|
||||
2. js的typeof的返回值有哪些 10
|
||||
|
||||
number, boolean, string, undefined, object, function,
|
||||
|
||||
3. 说出数组相关的几个方法并说明作用 6
|
||||
|
||||
push() 在末端添加项 pop() 从末端移除并返回该元素
|
||||
|
||||
shift() 从首端移除并返回该元素 unshift() 从首端添加项
|
||||
|
||||
splice(p, d, items) —— 从p开始删除d个元素,并插入 items
|
||||
|
||||
4. ajax请求时的get、post的区别 5
|
||||
|
||||
使用Get请求时,参数在URL中显示, 发送数据量小 ,不安全
|
||||
|
||||
使用Get请求时,参数不会在URL中显示, 发送数据量大 ,安全
|
||||
|
||||
5. 如何阻止浏览器的默认事件 5
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
6. 如何阻止事件冒泡 5
|
||||
|
||||
event.stopPropagation();
|
||||
|
||||
7. == 和===的区别 5
|
||||
|
||||
===比较类型和值,==只比较值
|
||||
|
||||
8. 局部变量和全局变量的区别 10
|
||||
|
||||
1. 作用域不同:全局作用域为整个程序,而局部为当前函数或循环等
|
||||
|
||||
2. 内存存储方式不同:全局存储在全局数据区中,局部存储在栈区
|
||||
|
||||
3. 生命期不同:全局的生命期随主程序的销毁而销毁,局部随函数或循环退出就销毁
|
||||
|
||||
4. 使用方式不同:全局声明后程序的各个部分都可以用到,局部只能在局部使用。
|
||||
|
||||
|
||||
|
||||
## 通过代码实现下面要求
|
||||
1. 通过原型链实现对象继承 10
|
||||
|
||||
**function** Parent(p) {
|
||||
|
||||
|
||||
|
||||
this.p = p;
|
||||
|
||||
this.psay = **function** () {
|
||||
|
||||
console.log("Parent:"+p);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
**function** Child(c) {
|
||||
|
||||
**var** c = c;
|
||||
|
||||
this.csay = **function** () {
|
||||
|
||||
console.log("childName: "+c)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
**function** GrandChild(g) {
|
||||
|
||||
this.g = g;
|
||||
|
||||
this.gsay = **function** () {
|
||||
|
||||
console.log("grandChildName :"+ this.g);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
**let** parent = new Parent();
|
||||
|
||||
Child.prototype = parent;
|
||||
|
||||
**let** child = new Child();
|
||||
|
||||
GrandChild.prototype = child;
|
||||
|
||||
**let** grandchild = new GrandChild();
|
||||
|
||||
|
||||
|
||||
|
||||
2. js手动实现 jq的链式操作 10
|
||||
|
||||
function Person(){};
|
||||
|
||||
Person.prototype ={
|
||||
|
||||
setName:function(name){
|
||||
|
||||
this.name = name;
|
||||
|
||||
return this;
|
||||
|
||||
},
|
||||
|
||||
setAge:function(age){
|
||||
|
||||
this.age = age;
|
||||
|
||||
return this;
|
||||
|
||||
},
|
||||
|
||||
setSex:function(sex){
|
||||
|
||||
this.sex = sex;
|
||||
|
||||
return this;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var Person= new Person(); Person.setName("Tom").setAge(24).setSex("male");
|
||||
|
||||
3. 做一个网页计算器 实现输入两个数 完成加减乘除四则运算 10
|
||||
|
||||
<body>
|
||||
|
||||
<input type="text" name="text" id="pre" >
|
||||
|
||||
<select id="operator">
|
||||
|
||||
<option value="+">+</option>
|
||||
|
||||
<option value="-">-</option>
|
||||
|
||||
<option value="*">*</option>
|
||||
|
||||
<option value="/">/</option>
|
||||
|
||||
</select>
|
||||
|
||||
<input type="text" name="text" id="next" >
|
||||
|
||||
<span>=</span>
|
||||
|
||||
<input type="text" id="result" readonly="true">
|
||||
|
||||
<input type="button" id="btn" value="提交" onclick="calculator();">
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
|
||||
**function** calculator(){
|
||||
|
||||
**var** pre=document.getElementById("pre").value;
|
||||
|
||||
**var** next=document.getElementById("next").value;
|
||||
|
||||
**var** opra=document.getElementById("operator").value;
|
||||
|
||||
|
||||
|
||||
**var** result=0;
|
||||
|
||||
switch(opra) {
|
||||
|
||||
case "+":
|
||||
|
||||
result=parseFloat(pre)+parseFloat(next);
|
||||
|
||||
break;
|
||||
|
||||
case "-":
|
||||
|
||||
result=parseFloat(pre)-parseFloat(next);
|
||||
|
||||
break;
|
||||
|
||||
case "*":
|
||||
|
||||
result=parseFloat(pre)*parseFloat(next);
|
||||
|
||||
break;
|
||||
|
||||
case "/":
|
||||
|
||||
if(parseFloat(next)!=0){
|
||||
|
||||
result=parseFloat(pre)/parseFloat(next);
|
||||
|
||||
}
|
||||
|
||||
else{
|
||||
|
||||
alert("除数不能为0");
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
document.getElementById("result").value=result;
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
4. 实现一个打点计时器,要求
|
||||
1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1(start 和end为用户输入)
|
||||
2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作
|
||||
|
||||
start = prompt('输入一个数从它开始到逐渐加一');
|
||||
|
||||
end = prompt('一直加到几为止');
|
||||
|
||||
count(start,end);
|
||||
|
||||
**function** count(start, end) {
|
||||
|
||||
console.log(start);
|
||||
|
||||
**var** temp=setInterval(**function**(){
|
||||
|
||||
if(start<end){
|
||||
|
||||
console.log(++start);
|
||||
|
||||
}
|
||||
|
||||
else{
|
||||
|
||||
clearInterval(temp);
|
||||
|
||||
}
|
||||
|
||||
},1000);
|
||||
|
||||
return {
|
||||
|
||||
cancel:**function**(){
|
||||
|
||||
clearInterval(temp);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
5. 在页面上将下面的json数据,需要放到表格里
|
||||
json数据为:
|
||||
[{"title":"史莱姆1号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05"},{"title":"史莱姆2号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05},{"title":"史莱姆3号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05"},{"title":"史莱姆4号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05"},{"title":"史莱姆5号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05}]
|
||||
|
||||
注: title对应文章标题,auth 对应的是作者 , contnet对应的是简介 date对应的是日期
|
||||
|
||||
|
||||
|
||||
**var** stu = [
|
||||
|
||||
{"title":"史莱姆1号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05"},
|
||||
|
||||
{"title":"史莱姆2号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05"},
|
||||
|
||||
{"title":"史莱姆3号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05"},
|
||||
|
||||
{"title":"史莱姆4号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05"},
|
||||
|
||||
{"title":"史莱姆5号","auth":'咖啡不放糖',"content":"别看我只是一直史莱姆","date":"2020/03/05"}
|
||||
|
||||
]
|
||||
|
||||
|
||||
|
||||
<table border="1px" id="tab">
|
||||
<tr>
|
||||
<th>文章标题</th>
|
||||
<th>作者</th>
|
||||
<th>简介</th>
|
||||
<th>日期</th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
$(document).ready(**function**() {
|
||||
|
||||
**var** s = "";
|
||||
|
||||
for(**var** i = 0; i < stu.length; i++) {
|
||||
|
||||
s = "<tr><td>" + stu[i].title + "</td><td>" + stu[i].auth + "</td><td>" +
|
||||
|
||||
stu[i].content + "</td><td>" + stu[i].date + "</td></tr>";
|
||||
|
||||
$("#tab").append(s);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
6. 实现 fizzBuzz 函数,参数 num 与返回值的关系如下:
|
||||
1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz
|
||||
2、如果 num 能被 3 整除,返回字符串 fizz
|
||||
3、如果 num 能被 5 整除,返回字符串 buzz
|
||||
4、如果参数为空或者不是 Number 类型,返回 false
|
||||
5、其余情况,返回参数 num
|
||||
|
||||
**function** fizzBuzz(num) {
|
||||
|
||||
if(num%3==0&&num%5==0){
|
||||
|
||||
return "fizzbuzz";
|
||||
|
||||
}else if(num%3==0){
|
||||
|
||||
return "fizz";
|
||||
|
||||
}else if(num%5==0){
|
||||
|
||||
return "buzz";
|
||||
|
||||
}else if(typeof(num)!="number"){
|
||||
|
||||
return false;
|
||||
|
||||
}else{
|
||||
|
||||
return num;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
222
考试/完成情况/前端考试成绩.md
Normal file
222
考试/完成情况/前端考试成绩.md
Normal file
@@ -0,0 +1,222 @@
|
||||
# 考试题目
|
||||
<font color="red">77</font>
|
||||
## 填空
|
||||
1. js变量类型一共有 7 种,分别是哪些 boolean string undefined null bigint number symbol <font color="red">3</font>
|
||||
2. 将 "025.5" 的string类型变量转化为 number 类型后 值是什么? 25.5 <font color="red">5</font>
|
||||
3. 1 + ‘1’ 的运算结果是 11 <font color="red">5</font>
|
||||
4. 0 || 3 的返回结果是 3 <font color="red">5</font>
|
||||
5. 1 && 5 的返回结果是 5 <font color="red">5</font>
|
||||
6. 三种数据类型检测的方法 typeof, instance of ,object.prototype.toString.call()
|
||||
<font color="red">3</font>
|
||||
## 简答
|
||||
1. 定义一个数组[1,2,4,8,32] 计算所有数组元素的总和。<font color="red">10</font>
|
||||
|
||||
let num = [1,2,4,8,32];
|
||||
|
||||
let sum = 0;
|
||||
|
||||
for (let i=0;i<num.length;i++) {
|
||||
|
||||
sum += num[i];
|
||||
|
||||
}
|
||||
|
||||
alert(sum);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
2. 定义一个方法 接受一个参数 计算从1 到传入数字的总和(累加) <font color="red">10</font>
|
||||
|
||||
let s = 0;
|
||||
|
||||
function sum(n){
|
||||
|
||||
for (let i=1;i<=n;i++) {
|
||||
|
||||
s += i;
|
||||
|
||||
}
|
||||
|
||||
alert(s);
|
||||
|
||||
}
|
||||
|
||||
sum(3);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
3. 定义一个方法 接受一个参数 返回传入的参数是不是偶数 偶数返回 1 奇数返回 0 <font color="red">10</font>
|
||||
|
||||
function odd(n){
|
||||
|
||||
if (n%2==0) {
|
||||
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
else { return 0; }
|
||||
|
||||
}
|
||||
|
||||
odd(3);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
4. 有下面一段代码 请写出答案 <font color="red">8</font>
|
||||
```javascript
|
||||
let obg = {
|
||||
name:"啦啦啦",
|
||||
age:18
|
||||
};
|
||||
function func(o){
|
||||
o.name = 123
|
||||
}
|
||||
func(obg);
|
||||
|
||||
```
|
||||
执行完之后obg的值是什么, 为什么
|
||||
|
||||
obg {
|
||||
name:123,
|
||||
age:18
|
||||
};
|
||||
|
||||
函数把obj当做参数传入并改变了obj的name属性
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
5. 有下面一段代码 请写出答案 <font color="red">10</font>
|
||||
```javascript
|
||||
let n = "喵喵喵"
|
||||
window.n = "汪汪汪"
|
||||
let obg = {
|
||||
n:"啦啦啦",
|
||||
echo: ()=> {
|
||||
return this.n;
|
||||
}
|
||||
}
|
||||
let jieguo = obg.echo()
|
||||
```
|
||||
请问变量 jieguo 的值是什么,为什么
|
||||
|
||||
汪汪汪
|
||||
|
||||
jiegou调用obg的echo方法,由于echo是箭头函数不能调用对象内的n:啦啦啦,只能调用对象外一层的n,对象外一层的n 先定义为喵喵喵后改为汪汪汪,所以jiegou的值为汪汪汪
|
||||
|
||||
|
||||
|
||||
6. 请写出一个构造函数 他有一个name 属性和一个 echo方法 执行echo的时候会返回他name的值 new 的时候将传入的参数的值赋值给name <font color="red">3</font>
|
||||
|
||||
function Fn(name){
|
||||
|
||||
this.name = name;
|
||||
|
||||
echo(name){
|
||||
|
||||
return "name";
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
let fn = new Fn("LiMing");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
7. 分析下面代码的预编译过程 <font color="red">5</font>
|
||||
|
||||
```
|
||||
var shopname='解忧杂货店';
|
||||
var auth="东野圭吾"
|
||||
function echo(){
|
||||
var say=function(){console.log("welcome")}
|
||||
age=40
|
||||
function end(){
|
||||
console.log('欢迎下次光临')
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
GO: 1.先找到变量和函数声明 找到 shopname auth echo()
|
||||
|
||||
2.执行过程中给变量赋值 var shopname='解忧杂货店'; var auth="东野圭吾"
|
||||
|
||||
3.执行过程中给函数赋函数体 function echo(){ ...}
|
||||
|
||||
4.执行
|
||||
|
||||
AO :1.在函数体内部先找到变量和形参 找到say
|
||||
|
||||
2.执行过程中形参和实参相统一,并且给函数表达式赋值
|
||||
|
||||
var say=function(){console.log("welcome")}
|
||||
|
||||
3.执行过程中寻找函数声明并给函数赋函数体
|
||||
|
||||
function end(){console.log('欢迎下次光临')}
|
||||
|
||||
4.执行
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user