# Mock Interview
## ALL
### BQ
* 為什麼想當工程師?
* 為什麼想當前端工程師?
* 遇到最困難的問題是什麼?如何解決?
* 最值得一提的 feature? 為什麼?
* 最近看過的新的東西或技術?
### Vue
* Lifecycle and hooks
* Vuex / actions and mutations
### JavaScript
* Closure
* Event loop
* Prototype chain
* async/await
### Front-end
*
***
## Reading
* https://www.npmjs.com/package/country-codes-iso-converter
* https://www.npmjs.com/package/currency-converter-lt
```javascript=
[1, 2, 3, 4].flatMap(x => [x, x + 0.5]);
[[0, 1], [2, 3], [4, 5]].reduceRight(
(accumulator, currentValue) => accumulator.concat(currentValue)
);
```
## Coding
1. create a function that can print out following results (do not create global variable)
```javascript
counter() // 1
counter() // 2
counter() // 3
...
```
2. 每秒印出數字,從 1 到 5 [sample answer](https://replit.com/@tsungtingdu/mock-interview-counter-sample-answers)
```javascript=
counter()
// 1
// 2
// 3
// 4
// 5
```
3. 篩選出每個 key 最高 score 的資料 [data](https://replit.com/@tsungtingdu/mock-interview-merge-data)
```javascript=
const a_api_result = {
key1: { score: 110, subkey: 'a-1' },
key3: { score: 220, subkey: 'a-3' },
key4: { score: 350, subkey: 'a-4' },
}
const b_api_result = {
key2: { score: 190, subkey: 'b-2' },
key3: { score: 300, subkey: 'b-3' },
key4: { score: 320, subkey: 'b-4' },
}
const c_api_result = {
key4: { score: 290, subkey: 'c-4' },
key5: { score: 420, subkey: 'c-5' },
}
mergeResult([a_api_result, b_api_result, c_api_result])
// expected result
// {
// key1: {...},
// key2: {...},
// key3: {...},
// key4: {...},
// key5: {...}
// }
```
4. filter data [data](https://codepen.io/tsungtingdu-the-bold/pen/rNYNZPX)
```javascript=
const data = [
{ name: 'alice', gender: 'female' },
{ name: 'alex', gender: 'male' },
{ name: 'angela', gender: 'female' },
{ name: 'jennifer', gender: 'female' },
{ name: 'john', gender: 'male' },
{ name: 'johnny' },
{ name: 'josh', gender: 'male' },
{ name: 'katie', gender: 'female' },
{ name: 'kenny', gender: 'unknown' },
{ name: 'ken', gender: 'male' },
]
// write your code below
```