第一次面试大厂,没有经验,虽然面前看了两天的面经,但是还是败给了当初被我抛弃的算法(大一下退出算法跑去开发)
一面(60min):
1.自我介绍
2.在平常开发中遇到过哪些问题?怎么解决的?
3.sso单点登录怎么实现的?
4.离职原因?
5.整个软件开发的流程是怎样的?
6.set和map的区别
7.object和map的区别
8.了解promise.all,promise.race吗
9.手撕promise.all
10.了解过哪些排序方法?
11.写一下你最熟悉的排序方法
12.讲一下从浏览器输入url,点击回车后发生了什么
13.TCP协议和UDP协议的区别
14.反问
好好好,看了三天的链表反转,队列、栈二叉树的公共祖先…唯独没看排序(虽然但是排序这么简单的问题我没写出来
)
这次估计悬了整个一下两道代码题都没答完整,可能是内心有点紧张吧,回头想了下也不算很难的内容,感觉这次错过了真的太可惜了
把两道代码题在复盘一下吧:
1.手写PromiseAll
const promiseAll = (promises) => {
return new Promise((resolve,reject)=>{
if(!Array.isArray(promises)) throw new TypeError("参数不是数组");
let resArr = []
let index = 0
for(let i = 0;i<promises.length;i++){
Promise.resolve(promises[i]).then(res=>{
index++;
resArr[i] = res;
if(index === promises.length){
resolve(resArr);
}
}).catch(err=>{
reject(err);
})
}
虽然但是就这么几行,居然没写出来
(还是自己太菜了)
排序算法:
2.快速排序
function quickSort (arr) {
let start = 0,end = arr.length - 1
sort(arr,start,end);
return arr;
}
function sort (arr,start,end) {
if(start >= end){
return
}
let temp = arr[start],i=start,j=end;
while (i !== j){
while (arr[j]>=temp && j > i){
j--;
}
while (arr[i]<=temp && j > i){
i++;
}
if(j > i){
let tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp
}
}
arr[start] = arr[i];
arr[i] = temp;
console.log(arr)
sort(arr,start,i-1);
sort(arr,i+1,end)
}