# 夏 Interview
## Q1: 下方輸出為何?
```javascript=
const person = {
name: 'John',
age: 30,
greet() {
console.log(`Hello, my name is ${this.name}.`);
}
};
person.greet(); // John?
const pg = person.greet;
pg(); // null?
const p2 = person;
p2.greet(); // john?
function printName(fn) {
fn();
}
printName(person.greet); // john?
const p3 = Object.assign({}, person);
p3.greet(); // John?
const p4 = JSON.parse(JSON.stringify(person));
p4.greet(); //
```
## Q2: print pyramid
```javascript=
const pyramid = (n) => {
}
console.log(pyramid(4));
console.log(pyramid(5));
/**
example:
-
input: 4
output:
a
bbb
ccccc
ddddddd
input: 5
output:
a
bbb
ccccc
ddddddd
eeeeeeeee
hint: The ASCII code for 'a' is 97.
hint: let char = String.fromCharCode(97);
**/
```
## Q3: Valid Parentheses
Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Every close bracket has a corresponding open bracket of the same type.
```javascript=
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
};
/**
Example 1:
Input: s = "()"
Output: true
Example 2:
Input: s = "()[]{}"
Output: true
Example 3:
Input: s = "(]"
Output: false
Example 4:
Input: s = "{[({})]}"
Output: true
**/
```