mindpin / knowledge-space-net-lib

知识空间网络的原型工程。同时包含一些规范文档。
5 stars 2 forks source link

准备考察知识点的问题 #4

Open fushang318 opened 11 years ago

fushang318 commented 11 years ago

为了便于开发和演示知识定位问答工具 我们需要准备一些数据 知识点我已经准备了一部分,是关于 javascript 语言核心的知识点 知识点导图下载地址 mmap 格式 http://pan.baidu.com/share/link?uk=34055634&shareid=2515061730 bmp 格式 http://pan.baidu.com/share/link?uk=34055634&shareid=2605066501

给这个导图上的每个知识点(叶子节点),准备一个问题,根据知识点的实际情况准备合适类型的问题(多选,单选,判断,编程题)

编程题指的是类似 javascript_step 形式的问题,有具体的编程要求,不过不用准备 rule ,先准备编程要求就可以

需要做的是

给每个知识点准备一个合适的问题,汇总到一起,格式不限,方便查看和进一步整理就可以

arlyxiao commented 11 years ago

语法

1, 字符集 (单选) A

字符 é 的 unicode 转义写法为 \u00E9,那这两个字符串 "café" === "caf\u00e9" 是比较结果是 A, True B, False

2, 注释 (多选) ABD

选择正确的注释 A, // 单行注释 B, /* 这里是一段注释 / // 这里是另一段注释 C, / 另一段单行注释 D,

/*
* 这又是另一段注释
* 注释连写多行
*/

3, 直接量 (单选) D

哪个才是对象直接量 A, 12 B, 'hi' C, null D, {x:1}

4, 标识符或保留字 (多选) AC

选择正确变量 A, $sí B, 4$abc C, é$str D, continue

5, 语句尾部可选分号 (多选) ACD

哪些需要加分号,否则无法按照正常逻辑解析代码 A, var y = x + f (a + b).toString()

B, var a a / 3 console.log(a)

C, a = 3 b = 4

D, var x = 0 [x, x + 1, x + 2].forEach(console.log)

fushang318 commented 11 years ago

语句

知识点 if else

  编程题
  # content
    定义一个数字变量 count,并给 count 赋值
    用 if else 分支语句分别输出
    console.log("count > 10")
    console.log("count < 10")
  # init_code
    var count = 3 * 4
    // input code
    console.log("count > 10")
    // input code
    console.log("count < 10")
  # rule
    暂略

知识点 switch

  编程题
  # content
    定义一个字符串变量 color,并给 color 赋值
    用 switch case 分支语句分别输出
    console.log("color is red")
    console.log("color is green")
    console.log("color is other")
  # init_code
    var count = "red"
    // input switch case code
  # rule
    暂略

知识点 while

  编程题
  # content
    用 while 语句输出( console.log(x) ) 1 到 20
  # rule
    暂略

知识点 for

  编程题
  # content
    用 for 语句输出( console.log(x) ) 1 到 20
  # rule
    暂略

知识点 for/in

  编程题
  # content
    用 for/in 语句输出( console.log(book[x]) ) 变量 book 的所有属性值
  # init_code
    var book = {title : "javascript 语言精粹" page : 200}
    // input code
  # rule
    暂略

知识点 break

想要跳出一个循环体或者switch语句时,需要用到__(单选) A
  A break
  B continue
  C return 
  D throw

知识点 continue

想要想要在一个循环体内跳过当前循环进入下一个循环时,需要用到__(单选) B
  A break
  B continue
  C return 
  D throw

知识点 return

如果一个函数内没有 return 语句,那么函数会把最后执行的一条语句的返回值作为函数的返回值(判断)

知识点 try/catch throw

  编程题
  # content
    补充代码,使运行代码后会按循序输出
    "run(0) 方法运行异常"
    "run(0)"
    "run(1)"
  # init_code
    function run(a){
      // input code
      return 1 + a
    }
    try{
      run(0)
    }catch(e){
      console.log("run(0) 方法运行异常")    
    }finally{
      console.log("run(0)")
    }
    try{
      run(1)
    }catch(e){
      console.log("run(1) 方法运行异常")    
    }finally{
      console.log("run(1)")
    }
  # rule
    暂略
kaid commented 11 years ago

表达式与运算符


表达式

  1. 关于表达式和语句的区别, 下列表述正确的是: (B) A. 语句需要用花括号括起来, 而表达式不需要; B. 表达式求值结果是一个值而语句对求值结果是否有值没有要求; C. 没有区别, 他们可以归属到同一个概念; D. 只要是定义和赋值的都是表达式, 其他都是语句.
  2. 关于副作用, 下列表述正确的是: (C) A. 1 + 2 有副作用; B. a++ 每次求值的结果都一样; C. a += 4 每次求值的结果都不一样; D. delet an_obj.prop 没有副作用;

算数运算符

  1. 算数运算是最简单的表达式: T/F (F)
  2. 算数运算符都是二元操作符: T/F (F)
  3. 1 + "2" === 3: T/F (F)
  4. false + false === NaN: T/F (F)
  5. "2" + "2" === "22": T/F (T)
  6. 1 & 2 === 2: T/F (F)
  7. 1 | 2 === 3: T/F (T)

关系表达式

  1. 关于 ===== 运算符, 下列表叔正确的是: (A) A. 0 == false; B. 1 === "1"; C. 两个运算符作用完全一样; D. false == NaN;
  2. NaN > 9999999: T/F (F)

逻辑表达式

  1. 1 || 0的求值结果是1: T/F (T)
  2. 0 && "hello world"的求值结果是"hello world": T/F (F)

赋值表达式

  1. var a = 2; a += 1a值为2: T/F (F)

in运算符

  1. "a" in {a: 1}: T/F (T)

类型运算符

  1. typeof null === "object": T/F (T)
  2. [1, 2, 3] instanceof Object: T/F (T)

逗号表达式

  1. 1, 2, 1, 4的求值结果是"undefined": T/F (F)

menxu commented 11 years ago

类型,值和变量

数字:

整数:    
在javascript中是否区分整数值和浮点数值
不是

浮点数:  
javascript中所用数用什么数字类型表示 B
A.整数
B.浮点数
C.整数,浮点数都可以

文本:

字符串:  javascript中字符串的索引值是从多少开始的 C
A.-1
B.1
C.0

转义字符:javascript中转义字符是使用什么表示的 B
A./
B.\

布尔值:

javascript中布尔值中正确是使用什么表示的 AD
A.true
B.false
C.0
D.1

null和undefinded:

下面那些是关于null和undefinded的正确描述 A
A.null是关键字,,而undefinded 不是
B.undefinded是关键字,而 null不是
C.null,undinded都是关键字
D.null,undinded都不是关键字

全局对象:

在客户端javascript中,在其表示的浏览器窗口中的所有javascript中,充当全局的对象是什么 D
A.Math
B.RegExp
C.Date
D.Window

全局属性:

当javascript解释器启动时,它创建的新的全局对象  选出下面那些是全局属性 B,C,E
A.Math
B.undinded
C.NaN
D.JSON
E.Infinity

全局函数:

当javascript解释器启动时,它创建的新的全局对象  选出下面那些是全局函数 C,D,E
A.open()
B.new()
C.isNaN()
D.parseInt()
E.eval()

构造函数:

当javascript解释器启动时,它创建的新的全局对象  选出下面那些是构造函数 A,D,E,F,G
A.Date()
B.System()
C.Stack()
D.Date()
E.RegExp()
F.String()
G.Object()

全局对象:

当javascript解释器启动时,它创建的新的全局对象  选出下面那些是全局对象 A,D
A.Math
B.undinded
C.NaN
D.JSON
E.Infinity

包装对象:

包装数字类型的对象是什么 A
A.Number()
B. Integer()
C.Boolean()
D.Array()

类型转换:

在javascript中 “7”*“4” 可以得到什么结果 C
A.出错
B."74"
C.28
D."7*4"

变量声明:

javascript中变量是哪一个关键字声明 C
A.String
B.Object
C.var
D.Number

变量作用域:

javascript中函数体类声明的变量在函数体外是否有定义
没有
arlyxiao commented 11 years ago

对象

1, 创建对象 (编程题)

该对象 book 的创建有问题,请修改


var book = {
  "main title": "javascript",
  sub-title: "The definitive guide",
  for, "all audiences",
  author: {
    firstname: "David",
    surname: "Flanagan"
  }
}

正确答案


var book = {
  "main title": "javascript",
  'sub-title': "The definitive guide",
  'for', "all audiences",
  author: {
    firstname: "David",
    surname: "Flanagan"
  }
}

2, 属性的查询和设置 (编程题)

对象 portifolio{stockname: shares} 只用来存储股票的名称 stockname, 跟购股份额 shares, 请写一个函数 addstock 用来给 portifolio 添加股票, 该函数会有三个参数 addstock(portifolio, stockname, shares)

正确答案


function addstock(portifolio, stockname, shares) {
  portifolio[stockname] = shares
}

3, 删除属性 (多选) ABCD

对象 o = {x: 1} 下面哪些返回结果为 true A, delete o.x; B, delete o.toString; C, delete 1; D, delete o.x; delete o.x;

4, 检测属性 (多选) ACD

对象 o = {x: 1} 下面哪些返回结果为 true A, o.hasOwnProperty('x') B, o.hasOwnProperty('toString') C, o.x !== undefined D, o.toString !== undefined

5, 枚举属性 (编程题)

请用控制台的方式输出该对象 var o = {x: 1, y: 2, z: 3} 的所有key

正确答案

var o = {x: 1, y: 2, z: 3}
for (p in o)
console.log(p)

5, get, set 方法使用 (编程题)

请用 get, set 的方式实现 var o = {data_prop: 7} 一样的效果,并在控制台输出

正确答案


var o = {
  get access_prop() {return data_prop},
  set access_prop(value) {var data_prop = value}
}
o.data_prop = 7;
console.log(o.data_prop)

5, 属性的特性 (编程题)

通过 defineProperty 方法, 创建对象 var o = {x: 1} 并设置成可写性,不可枚举,可配置性, 并在控制台输出可写性,枚举性,配置性结果

正确答案


var o = {}
Object.defineProperty(o, 'x', {
  value: 1,
  writable: true,
  enumerable: false,
  configurable: true
})
console.log(Object.getOwnPropertyDescriptor(o, 'x'))

6, 序列化对象 (编程题)

将对象 o = {x: 1} 先系列化,再解析,最后输出到控制台

正确答案


var o = {x: 1}
s = JSON.stringify(o)
p = JSON.parse(s)
console.log(p)

7, 对象方法 (多选题) ABC

下面哪些是从 Object.prototype 继承而来的方法 A, toString B, valueOf C, getPrototypeOf D, trim

menxu commented 11 years ago

数组

创建数组

在javascript,选出下面创建数组正确的选项  A,C,D
A.var arr = [1.1,true,'a',]
B.var arr = {1.1,true,'a',}
C.var arr = [1,{x:1,y:2},[2,{x:3,y:4}]
D.var arr = new Array(10)

数组元素的读与写

var a = ['world'];
a[1] = 3.14;
i = 2;
a[i] = 3;
a[i+1] = 'hello';
a[a[i]] = a[0];
根据上面确定 a[0],a[1],a[2],a[3] 的值分别是 C
A. a[0] = 'world',a[1] = 3.14, a[2] = 'hello', a[3] = 3
B. a[0] = 'world',a[1] = 'hello', a[2] = 3.14, a[3] = 3
A. a[0] = 'world',a[1] = 3.14, a[2] = 3, a[3] = 'hello'
A. a[0] = 'world',a[1] = 3, a[2] = 'hello', a[3] = 3.14

数组长度

var arr = [1,2,4,5,6] 请确定arr的长度 B
A.4
B.5
C.6
D.7

数组元素的增加和删除

javascript中 a=[1,3,5] 对a数组的操作正确的是 A.C.E
A. a[0] = 'zero'
B. a.keys.length
C. a.push('zero','two')
D. remove a[1]
E. delete a[1]

数组遍历

var arr = [1,3,5,6,7] 请写出两种打印数组arr元素的遍历方法
方法一
for(var i = 0; i < arr.length; i++){
  console.log(arr[i]);
}
方法二
for(var i in arr){
  console.log(arr[i]);
}

多堆数组

请使用二维数组写一个九九乘法表
for(var i=0; i<=9;i++){
  for(var j=1; j<=i; j++){
    console.log(j + " * " + i + " = " + i*j + " ");
  }
  console.log('\n');
}

数组方法

下面那些是ECMAScript 3 中数组的方法 A,E,F,G,H,I,J,K,O
A.join()
B.forEach()
C.map()
D.filter()
E.reverse()
F.sort()
G.concat()
H.slice()
I.splice()
J.push()和pop()
K.unshift()和shift()
L.every()和some()
M.reduce()和reduceRight()
N.indexOf()和lastIndexOf()
O.toString()和toLocaleString()

ECMAScript 5 中的数组方法

下面那些是 ECMAScript 5  中的数组方法 B,C,D,L,M,N
A.join()
B.forEach()
C.map()
D.filter()
E.reverse()
F.sort()
G.concat()
H.slice()
I.splice()
J.push()和pop()
K.unshift()和shift()
L.every()和some()
M.reduce()和reduceRight()
N.indexOf()和lastIndexOf()
O.toString()和toLocaleString()

数组类型

在javascript中使用哪一个来判读数组类型 A,B
A.Array.isArray()
B.instanceof Array
C.parototype()
arlyxiao commented 11 years ago

函数

1, 函数定义 (编程题)

定义函数 square, 传参数 x, 返回该参数的平方根

正确答案


var square = function(x) { return x * x; }

2, 函数调用 (单选) D

下面代码中 calculator.result 返回的结果是多少


var calculator = {
  operand1: 3,
  operand2: 5,
  add: function() {
    this.result = this.operand1 + this.operand2;
  }
}

calculator.result

A, 0 B, null C, 8 D, undefined

3, 函数的实参和形参 (单选) A

下面代码中,第二次 x 输出的值是多少


function f(x) {
  console.log(x);
  arguments[0] = null;
  console.log(x);
}

A, null B, 0 C, undefined D, x

4, 做为值的函数 (单选) C

下面代码中, s(4) 的结果是多少


function square(x) { return x * x }
var s = square;
square(5);
s(5);

A, null B, undefiend C, 25 D, 0

5, 做为命名空间的函数 (单选) C

下面代码中 jspy.getCount() 最终输出结果是多少


var jspy = (function() {
  var _count = 0;

  var incrementCount = function() {
    _count++;
  }

  var getCount = function() {
    return _count;
  }
  return {
    incrementCount: incrementCount,
    getCount: getCount
  };

})();

jspy.incrementCount();
jspy.getCount();

A, 0 B, null C, 1 D, undefined

6, 闭包 (单选) D

下面代码中, checkscope()() 返回值是多少


var scope = 'global scope';
function checkscope() {
  var scope = 'local scope';
  function f() { return scope; };
  return f;
}
checkscope()()

A, null B, undefiend C, global scope D, local scope

7, 函数属性 方法 和 构造函数 (单选) C

下面代码中, constructFunction()() 返回值是多少


var scope = 'global';
function constructFunction() {
  var scope = 'local';
  return new Function('return scope');
}
constructFunction()();

A, global B, null C, local D, undefined

arlyxiao commented 11 years ago

正则表达式

1, 正则表达式的定义 (多选题) AB

该正则表达式 /java(script)?/ 能匹配下面哪些

A, java B, javascript C, script D, undefiend

2, 用于模式匹配的 string 方法 (单选题) D

"JavaScript".search(/script/i) 返回值是多少

A, 3 B, 0 C, undefined D, 4

3, RegExp 对象 (单选题) A

下面代码的返回值是什么


var pattern = /java/i;
pattern.test('JavaScript');

A, true B, false C, undefined D, null

fushang318 commented 11 years ago

类和模块

类和原型

  对象 a 会从下面那个对象上继承属性(单选) D
  A a.constructor
  B a.prototype
  C a.prototype.constructor
  D a.constructor.prototype

类和构造函数

  var a = new A(),下面那个是正确的(单选)
  A a.prototype == A
  B a.constructor == A
  C a.prototype.constructor == A
  D a.constructor.prototype == A

类的扩充

编程题
# content
  使用 prototype 特性,在下面注释位置增加代码,使最后一行代码的输出内容为 "hello prototype"
# init_code
  var A = function(){}
  // input coce

  console.log(new A().value())

类的类型

 var a = new A(), 下面那些成立(多选) AB
A a instanceof A == true
B a.constructor == A
C a instanceof A.prototype == true
D a.constructor == A.prototype

JavaScript中的面向对象技术

编程题
# content
  在下面注释位置增加代码,使最后几行的输出都是 true
# init_code
  // input coce
  var Book = 

  var title = "javascript 语言精粹"
  var price = 28
  var book = new Book(title,price)
  console.log(book.title == title)
  console.log(book.price == price)
  console.log(book.pricing() == price * 0.8)
arlyxiao commented 11 years ago

类和模块 (对李飞上面的类和模块进行的相关补充)

1, 子类 (编程题)

写一个类 B, 继承类 A, 并能够 通过 b = new B ,在控制台输出 b.x 的值


function A() {
  this.x = 1;
}

正确答案


function B(){
  A.call(this);
}

B.prototype = new A;

b = new B;
console.log(b.x);

2, EcmaScript5 中的类(编程题)

Range 方法的目的是定义一个不可变的类,请实现 freezeProps 方法

function Range(from, to) {
    this.from = from;
    this.to = to;
    freezeProps(this);
}

正确答案


function freezeProps(o) {
  var props = (arguments.length == 1)
    ? Object.getOwnPropertyNames(o)
    : Array.prototype.splice.call(arguments, 1);

  props.forEach(function(n) {
    if (!Object.getOwnPropertyDescriptor(o,n).configurable) return;
    Object.defineProperty(o, n, { writable: false, configurable: false });
  });

  return o;
}

3, 模块 (编程题)

将下面代码,改写成使用模块的形式


var product = function (price) {
    this.price = price;
    this.getPrice = function(){
                       return this.price;
        };
    };

function doCalculations() {
    var p = new product(100);
    return p.getPrice();
}

doCalculations();

正确答案


var MYAPPLICATION = {
    product: function (price) {
        this.price = price;
        this.getPrice = function(){
                          return this.price;
                       };
    },
    doCalculations: function () {
        var p = new MYAPPLICATION.product(100);
        alert(this.calculateVat(p.getPrice()));
    }
}

var p = new MYAPPLICATION.product(100);
p.getPrice();