---
# System prepended metadata

title: 夏 Interview

---

# 夏 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
**/
```