当前位置: 首页 > 面试经验 >

滴滴前端日常实习一二面

优质
小牛编辑
132浏览
2023-03-28

滴滴前端日常实习一二面

公众号查到暂不匹配,二面挂


2.10 滴滴前端一面


第一阶段 介绍项目一 (10min)


1.问命令是如何解析的?√

2.问如果让你手写实现命令行解析器?×

3.那么如果命令冲突或者参数是另一个命令的情况,怎么解决?√

4.问参数里面如果有括号的话,怎么判断括号合法性:括号匹配 ·leetcode经典题

分析上面两种方案的优劣√


第二阶段 八股文(10min-31min)


基本数据类型有哪些?√

引用类型有哪些? (答得不全,埋下伏笔)

两者存储方式有哪些区别? √

克隆 (深拷贝与浅拷贝)解决什么问题?

那么你手写一下深拷贝吧,此时开启屏幕共享,大概11分钟左右

问如何优化,以及有哪些问题?

什么是循环引用?

怎么判断循环引用?

对闭包的理解?

事件event的理解?

问 捕获和冒泡的先后顺序以及什么两者区别?

vue3 与 vue2 的区别?

平常开发 ts 和js 的使用情况?

问ts 的好处?

问用ts 实现一个数据类型,获取任何函数的返回值类型?

网上搜到的答案


type ReturnType<T extends (...arg: any) => any> = T extends (...arg:any) => infer R ? R : any;
//infer R 表示待推断的函数返回值。如果T能够赋值给(...arg:any) => infer R则结果是R,否则是any

问用过泛型吗,泛型是什么?

泛型里面定义一个局部泛型?

typeof 与 instanceof 的区别?

instanceof 的实现?能不能人为物理影响prototype

前端工程化:


你了解webpack打包,其实vue实现了一个vite,vite平时用dev,在生产环境build的时候应该走的webpack?


感觉说的有点问题,vue实现了vite?vite开发dev环境不是esbuild,生产环境build不是走的rollup,和webpack有什么关系?


我反问了一句,build打包不是rollup吗?面试官尴尬的说:对对对,rollup,记错了。



接着问了解rollup吗?

网络部分(33min时):


http 和 https 的区别:

在浏览器输入完url过程之后的一系列过程:

想让加载速度变得更快一点怎么办?

手撕代码部分(36min时)


写 n - m的randomInt

问Math.random() 有什么缺陷?

问random存在哪些安全上的问题?

聊第二个项目(40min):


问项目背景?

想找到一键复制的按钮,but 没问一键复制的原理:

问登录逻辑?

让手写登录逻辑?

2-3分钟手写了一套简单的登录逻辑。


const config = {
salt: "zzzzz",
};

// 简单写了一个字符串哈希模拟 md5加密的过程
function md5(str) {
let p = str + config.salt;
let s = "",
mod = 131;
let now = 1;
for (let i = 0; i < p.length; i++) {
now = (now * (p[i].charCodeAt(0) - "a".charCodeAt(0))) % mod;
s += String.fromCharCode(now);
}
return s;
}
// 模拟数据库
const data = [
{
uname: "11",
password: "a12312xcz",
},
];

// 模拟登录逻辑
function login(uname, password) {
let upassword = md5(password);
let flag = false;
// 查询数据库 是否存在数据
data.forEach((u) => {
if (u.uname == uname && u.password == upassword) {
flag = true;
}
});
return flag ? "success" : "password wrong";
}


问for ... break好,还是 forEach 好,又提到了 频率攻击:

2.13 滴滴前端日常实习二面


1. 问怎么学习前端的?

2. 问平常用的vue相关的技术栈?

3. ES6怎么学的?

4. 问解构赋值,50个元素的对象,剔除2个元素(不能使用delete),获取新的对象(写了:let {delete_a, delete_b, ...newData} = data )

5. 手写promise.all ,取消操作里面throw error会不会捕获,为什么不会,会出现什么报错?

6. 浏览器缓存

7. 问ESM规范,和Common JS的区别,问ESM导入导出怎么解决文件的循环引用问题(不会)

8. 问react 函数式组件的理解

9. 布局,项目首页的布局,长列表的优化(答了虚拟列表),问如果加上搜索怎么处理(用computed过滤)

10. 用过哪些时间处理的库

11. 手写时间格式化,比如"2023-02-13 19:00" => "2023年2月13日" ;如果加上"YYYY-MM-DD"这种过滤该怎么写
#我的实习求职记录#
 类似资料: