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