JavaScript 编程题
下面两个函数的返回值是一样的吗?为什么?
function foo1()
{
return {
bar: "hello"
};
}
function foo2()
{
return
{
bar: "hello"
};
}
答:两个函数返回的值并不一样。
因为如果执行以下语句:
console.log(“foo1 returns:”);
console.log(foo1());
console.log(“foo2 returns:”);
console.log(foo2());
将得到下面的结果:
foo1 returns:
Object {bar: “hello”}
foo2 returns:
undefined
网上答案:不仅仅只是对返回不一样的结果奇怪,也要对foo2()没有抛出error特别注意。产生这个结果的原因是分号在JavaScript中的用法(省略分号不是好的做法)。当foo2()的一行语句中只包含return时,会在return语句后面自动的加上一个分号。后面的语句也是合法的,不会抛出error,尽管它不会调用,也不做任何事(仅仅只是一个没有用到的语句块,它定义了一个等同于’hello’字符串的属性bar而已)。
这也说明了在Javascript中大括号的位置应该放在语句后面的编程风格更符合Javascript的语法要求(有些语言推荐放在新一行的开头)。
MySQL 编程题
用一条 SQL 语句,查询出每门课都大于 80 分的学生姓名。
表名 student_score
name | course | score |
---|---|---|
张三 | 语文 | 81 |
张三 | 数学 | 75 |
李四 | 语文 | 76 |
李四 | 数学 | 90 |
王五 | 语文 | 81 |
王五 | 数学 | 100 |
王五 | 英语 | 90 |
CREATE TABLE student_score (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
course VARCHAR(255),
score VARCHAR(255)
)
select distinct name,course,score from student_score where name not in (select distinct name from student_score where score<=80)
Java 编程题
一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高?
public class TestBallApp {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
answer();
}
public static void answer(){
float distance=100;float h=0;float s=0;
for(int i=1;i<=10;i++){
s+=distance+distance/2;
distance=distance/2;
}
s=s-distance;
h=distance;
System.out.println("第10次落地时,经过:"+s+"m");
System.out.println("第10次反弹: "+h+"m");
}
}