滴滴国际化前端一面(凉)

整体体验挺差的,后续也没通知了。。面试官感觉非常不专业,一直问还有吗还有吗,问的问题大部分比较偏……算法写的暴力o(n3),没问怎么优化复杂度反而揪着去重不放,问了好久,说了set去重map去重,还有吗还有吗
期间我问 能不能给点提示,她直接下一题, 最主要是我第一题代码写错了也完全没说,只看输出结果,深拷贝测试用例也没改变值就给当过了,promise手写问我调用了吗,promise是调用的吗,不写then不也一样会执行的吗!加上各种负面debuff,出题给我粘测试用例极其缓慢,真的怀疑是不是hr来顶替技术面……

最开始问我,实验室的也是用vue 吗,我说实验室不写前端……
迷惑 问为什么不找算法 我说算法太卷了
面试官唯一一次笑了说前端也很卷,自己七年之前学的东西完全都用不上了
这就叫卷……我……
我能不能说十几年之前互联网都还没普及……
虽然面试官是妹子 但是整体体验真的很差=_= 就一直问还有吗,还有吗,疑问句什么的,我答了个不是她想要的答案 实现也没看 就问还有吗弄得真的和上课一样,好差

直接上来就是手写深拷贝……………………下面四个问题是零散着问的,篇幅原因放在这
1、    >  &  css的选择器有什么 还有呢 什么css会继承 还有呢
css哪些属性可以继承? text-align, font-size一系列text-shadow,color,scale,scale。。。。
2、讲一下http2
3、有什么伪类 active hover blur
4、用过git吗 reset和revert有什么区别  merge怎么操作的
用过什么webpack的插件 (vue-cli js-token awe swiper elent0

三个手写
01  手写深拷贝
其实我写的应该是不对的
她也没仔细看 装模作样调用了一下
就定义调用 对象和数组的时候argue了一下

↓ 我这就写的完全错了,因为new obj那里是错的~ 根本访问的为空,还是只是简单复制了连浅拷贝都算不上。竟然没看出来给的例子也没成功调用,例子还是我自己写的,只会看报错,你这工作了七年也只能做到一面面试官,这水平我……
```
function deepclone(obj){
if(typeof(obj)!='object')return obj;
let newobj;
if(Array.isArray(obj)){
newobj=[]
obj.forEach(item=>{
if(typeof(item)==='object'){
deepclone(item);
}else{
newobj[i]=item;
}
})
}else{
newobj={}
for(let i in obj){
if(typeof(newobj[i])==='object'){
let tmp;
tmp=deepclone(newobj[i]);
}else{
newobj[i]=obj[i];
}
}
}
return newobj;
}
let obj1={
name:1,
sex:{
age:2,
grade:3
},
array:[1,2,3]
}
let obj2=deepclone(obj1);

console.log(obj2);
```
02 给定一个包含 n 个整数的数组nums,判断 nums 中是否存在三个元素a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
怎么去重  讲了set 问有没有别的方法
例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:[
[-1, 0, 1],
[-1, -1, 2]]

function solve(num){
let ans=[];
let set=new Set();
num.sort();
console.log(num)
for(let i=0;i<num.length;i++){
for(let j=i+1;j<num.length;j++){
for(let k=j+1;k<num.length;k++){
if(num[i]+num[j]+num[k]===0){
let tmp=new Array();
tmp.push(num[i],num[j],num[k]);
if(!set.has(num[i].toString()+','+num[j].toString+','+num[k].toString()))
ans.push(tmp);
set.add(num[i].toString()+','+num[j].toString+','+num[k].toString());
}
}
}
}

return ans;
}
nums = [-1, 0, 1, 2, -1, -4];
console.log(solve(nums));
去重怎么操作
03 手写promise all
好像打字很慢的样子 说我没有调用
我这写的是啥  实在忘了去then里搞了
我不想看了 反正是浪费时间
// 手写promise 换的
const promisearray =
[
new Promise((resolve, reject) => {
setTimeout(() => {
resolve(1);
}, 200)
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve(2);
}, 100)
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve(3);
}, 400)
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve(4);
}, 300)
})
]

我现在有点懂了……  其他的问题啥用没有啊,你手写写不出来是硬伤,其他的答得好也不会加分,差不多行了

对于 all 方法而言,需要完成下面的核心功能:
1)传入参数为一个空的可迭代对象,则直接进行resolve。
2)如果参数中有一个promise失败,那么Promise.all返回的promise对象失败。
3)在任何情况下,Promise.all 返回的 promise 的完成状态的结果都是一个数组

```
Promise.all = function(arr){
return new Promise((resolve,reject)=>{
let res = []
let index = 0
let len = arr.length
if(len==0){
resolve(result);
return;
}

for(let i=0;i<len;i++){
Promise.resolve(arr[i]).then(data=>{
res[i]=data;
index++;
if (index===len) resolve(res);
}).catch(err=>{
reject(err)
})
}
/* arr.forEach((p,i)=>{
p.then(val=>{
res[i] = val;
index++;
if(index===len) resolve(res)
},err=>{
reject(err)
})
}) */
})
}
```
#面试题目##滴滴#
全部评论
这么多手写题。。
点赞 回复 分享
发布于 2021-12-03 20:47

相关推荐

评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务