阿⾥钉钉前端实习⾯经(别⼈的)
⼀、阿⾥前端电话⾯-2020.3.3(别⼈的)
1.⾸先会做⼀个简单的⾃我介绍,问⼀下基础的问题,⽐如三句话总结react的特点;
2.做两道笔试题,很简单,但是太紧张了,⾯试官⼈很好,指导我完成了这两道题:
1).⽐较版本号(类似1.0.1/1.2.0/1.2/0.1)
实现⼀个⽅法,⽤于⽐较两个版本号(version1、version2)
如果version1 > version2,返回1;如果version1 < version2,返回-1,其他情况返回0。版本号规则`x.y.z`,xyz均为⼤于等于0的整数,⾄少有x位
2).随机⽣成字符串
实现⼀个随机符串⽣成函数 randomStr(),要求如下:
⽣成的随机的字符串应该以字母开头,并包含 [a-z][0-9] 这些字符。
⽣成的字符串长度为 8。
⽣成的字符串不能够在程序运⾏的⽣命周期中存在重复的情形。
3.做完题还问了⼀下如何学习的,平常有没有看些开源的项⽬,有没有了解react源码等;
4.最后问我有没有什么问题,我问的是我觉得我表现很差,我太紧张了,⾯试官怎么回我的我都没怎么听到
但是告诉我刷题还是要刷的,另外⽐如array⾥的reduce函数啊,object的各种⽅法都要去了解下,在写代码的时候如果只是使⽤for循环这样,⽐较减分
⼆、阿⾥前端实习⼀⾯-2020.3.17(别⼈的)
链接:
1. 说下项⽬中的难点
2. 说下diff算法-vue和React的diff算法
diff算法解决什么问题:diff算法是⼀种优化⼿段,将前后两个模块进⾏差异化的对⽐,真实的dom开销是很⼤的,当修改了页⾯的某个数据时,如果直接渲染真实dom会引起整个树的重绘,所以希望能够只让修改的数据映射到真实的dom,做最少的重绘,这就是diff算法要解决的事情。
虚拟dom:virtual DOM是将真实的DOM数据抽取出来,以对象的形式摸你树形结构,diff算法⽐较的也是virtual DOM
diff算法:对操作前后的dom树同⼀层的节点进⾏对⽐,⼀层⼀层对⽐,再插⼊真实的dom中,重新渲染
3. 做的项⽬优化
4. HTTP,HTTPS,websocket的区别
HTTP和WS⽐较:
相同点:
都是基于TCP的应⽤层的协议
都使⽤request/response模式进⾏连接的建⽴
在连接的建⽴过程中对错误的处理⽅式相同,在这个阶段WS可能返回和HTTP相同的返回码。
可以在⽹络中传输数据
不同点:
WS是双向通信协议,可以双向发送或者接受信息,HTTP是单向的
WS使⽤HTTP来建⽴连接,但是定义了⼀系列新的header域,这些域在HTTP中不会使⽤
WS的链接不能通过中间⼈转发,它必须是⼀个直接连接
WS连接建⽴后,数据的传输使⽤帧来传递,不再需要request消息
WS的数据帧有序
websocket是什么:WebSocket protocol 是HTML5⼀种新的协议。它实现了浏览器与服务器全双⼯通信(full-duplex)。
websocket的⽬的:HTTP协议是单向的⽹络协议,建⽴连接后只允许浏览器向服务器发送请求,当需要实时通信的时候,浏览器要花时间⼀直向服务器请求最新数据,导致过多不必要的请求,浪费流量和服务器资源,每⼀次请求、应答,都浪费了⼀定流量在相同的头部信息上。
在WebSocket中,只需要服务器和浏览器通过HTTP协议进⾏⼀个握⼿的动作,然后单独建⽴⼀条TCP的通信通道进⾏数据的传送。websocket的原理和执⾏机制:
连接过程 —— 握⼿过程
浏览器、服务器建⽴TCP连接,三次握⼿。这是通信的基础,传输控制层,若失败后续都不执⾏。
TCP连接成功后,浏览器通过HTTP协议向服务器传送WebSocket⽀持的版本号等信息。(开始前的HTTP握⼿)
服务器收到客户端的握⼿请求后,同样采⽤HTTP协议回馈数据。
当收到了连接成功的消息后,通过TCP通道进⾏传输通信。
HTTP和HTTPS:
区别:
http协议是简单的,⽆状态,明⽂传输的;https是由SSL+http协议构建的可加密,有⾝份认证的协议,更加安全
http的端⼝是80,https的端⼝是443
http协议免费,https需要ca申请证书,需要交费
SSL协议:
SSL是⾮对称加密,加密和解密需要两个秘钥,公开秘钥和私有秘钥
连接过程:
客户端请求建⽴SSL连接,发送⽀持的加密⽅式以及⼀个随机数client random给服务器
服务器选择其中⼀种加密⽅式,再加上另⼀个随机数server random、数字证书(包含公钥),发送给客户端
客户端确认数字证书有效,再⽣成新的随机数,将这个随机数⽤公钥进⾏加密发送给服务器
服务器收到客户端回复,利⽤⾃⼰的私钥解密,获得随机数,通过三个随机数和协商的加密⽅式计算⽣成⼀个对称秘钥,之后的会话通过这个对称秘钥进⾏加密传输
5. SSR ⾸屏服务端渲染(SSR:server side render)
6. SSR的具体⽤法
7. ⽤SSR遇到过什么难题
8. 为什么使⽤redis
9. 闭包
产⽣闭包的情况:
出现函数嵌套
内部函数引⽤了外部函数的变量
外部函数被执⾏调⽤了
闭包是什么:
使⽤chrome调试查看
闭包是嵌套的内部函数
闭包的作⽤:
让函数内部的局部变量在函数执⾏完之后,仍存活在内存中,延长局部变量的⽣命周期
让函数外部可以操作函数内部的数据
闭包的⽣命周期:
产⽣:在嵌套内部函数定义执⾏完时产⽣
死亡:在嵌套的内部函数成为垃圾对象时
常见闭包:
将函数作为另⼀个函数的返回值
function fn1(){
var a = 2
function fn2(){
a++
console.log(a)
}
return fn2
}
var f = fn1()
f()// 3
f()//4
整个过程中产⽣了⼏个闭包?
1个,因为执⾏外部函数的时候才会创建内部函数对象,执⾏1次,就创建1次,因为fn1的返回值是fn2,f()接收的是fn1的返回值,所以f()调⽤2次,相当于fn1()() 调⽤的是fn2内部函数2次,闭包只产⽣了1个,a的值在闭包⾥,第⼆次调⽤时a的时候a=3
执⾏完之后,函数声明的内部变量a是否存在?包含这个内部变量的内部函数还在吗?在,在闭包⾥,但是这个内部函数不在了,但是内部变量不会变为垃圾对象,因为var f = fn1(),f指向的是这个内部变量,有⼈指向就不是垃圾变量;如果是fn1()直接调⽤,或者f=null 结束时没有f指向a,a就会变为垃圾变量
将函数作为实参传递给另⼀个函数调⽤
function showDelay(msg,time){
setTimeOut(function(){
alert(msg)
},time)
}
showDelay(‘lalala’,2000)
因为内部函数使⽤了msg,所以产⽣了闭包,time不在内部函数⾥,time就不在闭包⾥
10. 原型链
11. 阿⾥伯乐做了个版本号⽐较问题,没全a,拿去Leecode跑45/72,估计凉了
三、阿⾥钉钉前端实习-2020.3.14(别⼈的)
1. 你做了哪些东西呢,你觉得⾃⼰做的不错的地⽅,⽤到哪些技术解决了哪些问题,具体说⼀下
2. 为什么选react,为什么选⽤egg,为什么选⽤ts
3. 性能优化
4. react hook 原理
5. react 原理
四、阿⾥前端实习⼀⾯
原⽂链接:blog.csdn/qq_34873710/article/details/104665976
⼀、钉钉⾯试问题
1. ⾸先做⼀下你的⾃我介绍以及你简历上的项⽬,以及难点创新点(介绍了⼤概5min)
(在我做介绍的过程中,⾯试官记录了他想要问的问题 at same time)
回答的项⽬相对之前清晰,但还是有卡顿,多熟悉复盘项⽬真的重要!
2. CSS问题
①你能说⼀下CSS的盒模型包含哪些属性吗?
②有属性可以影响盒模型的范围吗?(关于这个问题,了解了半天,不明⽩⾯试官想要表达的意思) box-sizing =content-box|border-
box|inherit
③ height = 100px的时候,包含这个padding吗?怎样让它含?
④ margin-collapse:你了解吗,⽗⼦div同样设置margin-top,⼦div相对于顶部的margin应该是什么?你确定吗?确定,但实际上是错的,默认应该是选两个对的
⑤ CSS布局的话,你分别⽤哪些⽅式及属性
⑥ relative和absolute的区别(开始两者说反了,后来及时纠正)
⑦ flex布局你了解过吗?他有哪些属性?设置什么值。(答⾮所问)
追问:默认是横着排吗?有没有办法改变⽅向
3. JS问题
前端websocket怎么用做⼿机端的时候怎么实现⾃适应的?
rpx是个什么单位?⼿机上1rpx是⼀个物理像素吗?是怎么做到的?
追问:如何做到换算成750的?了解怎么吗
异步IO请求怎么发送?(回答成为了实现异步的⽅式)ajax
ajax底层是哪个⽅法呢?js的api,真正底层提供这个概念的⽅法是什么呢(⾄今不明⽩)。。。
fetch实现异步请求吗?
ajax 可以跨域吗?那有什么限制吗?
可以,HTML5中可以使⽤CORS跨域资源共享机制实现跨域
CORS通过设置服务端的HTTP头部信息来告诉浏览器,允许域名跨域访问
⽐如header('Access-Control-Allow-Origin:*')
有办法跨域吗?jsonp是怎么做的呢?jsonp浏览器底层的⽅法是什么?
①同源策略:同源指的是域名、端⼝、协议相同的url可以互相访问,在同源策略下,在某个服务器下的页⾯时⽆法获取到该服务器以外的数据的(⽐如在⾃⼰的⽹站通过ajax去获取⾖瓣的地址,是会报错)
②哪些不符合同源策略,可以跨域获取数据:<img>的src(获取图⽚)、<link>的href(获取css)、<script>的src(获取JavaScript)
② JSONP是JSON with padding,原理是通过动态创建<script>标签,利⽤<script>标签⾥的src不受同源策略约束来跨域获取数据
③ JSONP实现跨域请求:
JSONP由两个部分组成:回调函数和数据
<script type="text/javascript">
function handleResponse(response){
console.log(response);
}
</script>
<script type="text/javascript">
var oBtn = ElementById('btn');
var script = ateElement("script");
script.src = "api.douban/v2/book/search?q=javascript&count=1&callback=handleResponse";
document.body.insertBefore(script, document.body.firstChild);
};
};
</script>
这个相当于在body的第⼀个⼦节点中加⼊了⼀⾏代码:
<script type="text/javascript" src ="api.douban/v2/book/search?q=javascript&count=1&callback=handleResponse";></script>
回调函数是handleResponse(response),放在src的callback中,callback前⾯的地址获取的是地址内的JSON数据,将获取到的JSON数据作为参数传递给回调函数的参数(response),并执⾏回调函数
jsonp可以发post请求吗?
不可以;从post和get的区别⼊⼿
get是通过在请求的url上添加请求参数的
post是通过http post机制,将表单内各个字段与其内容放在HTML header内,作为HTTP消息的实体内容⼀起传送的;
jsonp是通过动态创建script,添加src属性实现跨域的,⽆法通过http post机制为html header传送数据
http有哪些⽅法你能说⼀下嘛?Options能做什么?
cookie 和 session的区别
如何清除cookie
事件委托的原理
ES6有哪些新的属性?
箭头函数相⽐于其他函数的区别?
Generator 和 async/await 函数⽤来做啥?
async的返回值是什么呢?
Promise的⽅法有哪些?
Promise可以取消吗?
Generator设计的⽬的是⼲啥?
ES6中的中this的指向怎样决定?
关于Vue
Vue对前端开发有什么优势
双向绑定中Vuex的⼯作原理?
vue-router的原理?改完整的path?url会有变化吗?
追问:服务端需要做什么配合吗?(不需要)
核⼼就是:更新视图但是不重新请求页⾯
其他问题
image caption算法的了解
对于项⽬分⼯以及我负责的内容
怎么接触的前端?
⼆、钉钉笔试题⽬
1.评测题⽬:
// 实现⼀个简单的模板引擎 render(template, data);
// 输⼊: let template = ‘我是{{name}},年龄{{ age }},性别{{sex}}’;
let data = { name: ‘姓名’, age: 18 }
// 输出:我是姓名,年龄18,性别undefined
在笔试的过程中,⾯试官是⾮常有耐⼼的,帮助我改了我忽略的空格问题,还引导我⽤其他的⽅式解决,但是时间来不及了,然后他已经推迟下班了,我为耽误⼈家时间表⽰⾮常的抱歉,但和我⼀样⾯试钉钉的同学是两道题,我只测了⼀道,问问题问了不到⼀⼩时吧,虽然⾯试官之前说整体30~60min.
经过这次⾯试呢,我的收获是:
简历上⾯的东西⼀定要摸得⾮常透彻
实事求是的回答问题,⽐搪塞⼀个答案要好
⼀定要多刷题,动⼿能⼒要棒!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论