# JavaScript 編程題
下面兩個函數的返回值是一樣的嗎?為什么?
```
function foo1() {
return {
bar: "hello"
};
}
function foo2() {
return
{
bar: "hello"
};
}
```
在編程語言中,基本都是使用分號(;)將語句分隔開,這可以增加代碼的可讀性和整潔性。而在 JS 中,如若語句各占獨立一行,通常可以省略語句間的分號(;),JS 解析器會根據能否正常編譯來決定是否自動填充分號:
```
var test = 1 + 2;
console.log(test); //3
```
在上述情況中,為了正確解析代碼,就不會自動填充分號了,但是對于 return 、break、continue 等語句,如果后面緊跟換行,解析器一定會自動在后面填充分號(;),所以上面的第二個函數就變成了這樣:
~~~
function foo2() {
return;
{
bar: "hello"
};
}
~~~
所以第二個函數是返回 undefined。
---
# MySQL 編程題
用一條 SQL 語句,查詢出每門課都大于 80 分的學生姓名。
表名 student\_score
| name | course | score |
| :--- | :--- | :--- |
| 張三 | 語文 | 81 |
| 張三 | 數學 | 75 |
| 李四 | 語文 | 76 |
| 李四 | 數學 | 90 |
| 王五 | 語文 | 81 |
| 王五 | 數學 | 100 |
| 王五 | 英語 | 90 |
```
SELECT DISTINCT name FROM student_score
WHERE name NOT IN (SELECT DISTINCT name FROM student_score WHERE score<=80);
```
或者
```
SELECT name FROM student_score GROUP BY name HAVING MIN(score)>80;
```
---
# Java 編程題
一球從 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地時,共經過多少米?第 10 次反彈多高?
~~~
package test;
public class Test2 {
/**
*
* @param h 距離
* @param n 次數
* @return 第n次反彈的高度
*/
public static double sumBallHeight(double h, int n) {
if (n == 1)
return h / 2;
else
return sumBallHeight(h / 2, n - 1);
}
public static void main(String[] args) {
System.out.println(sumBallHeight(100, 10));
}
}
~~~