上周四一个小哥打来,问有没有时间,但是时间不合适,他说这周再联系,但是周一等了一天都没有消息,在牛客网上也有人说收到电话说时间不合适,后来就没有然后了,所以很怕自己也是这种情况,幸好当时打过来的是手机号码,所以今天上午就发了条短信,问小哥啥时候有时间能面?等了会就回我了,说定下午4点半可以不? 就这样开始了美团一面。
主要问了这么些问题:
- 自我介绍
- 做了哪些项目?
- 项目中遇到的问题?技术栈上遇到什么问题?
TCP和UDP的区别有哪些?(当时只回答出来面向连接和无连接)
TCP:面向连接的(三次握手建立连接); 保证数据正确性;流模式 UDP:无连接的; 尽可能交付,不保证数据到达的顺序;数据报模式
- HTTP restful有了解吗?(没有听说过,貌似是一种设计风格,不是一种协议)
- 因为上面说完全没有了解过,又问我对于HTTP的状态码是否有了解。
- 平时用什么代码管理?(GitHub)
- Github常用的命令有哪些?
- Fetch命令有没有用到过?是什么用的?(没有用到过Fetch,但是用到Git pull,拉下来最新的代码然后与本地代码合并,但是Fetch不会合并)
浏览器的缓存机制了解吗?(不太了解)
浏览器缓存主要通过HTTP头部来判断要不要缓存和缓存的过期时间。 Cache-Control: max-age=600(表示最长缓存时间600秒) Cache-Control: private (告诉浏览器不要缓存这个文件) Expires: Mon, 25 Sep 2017 02:32:46 GMT(表示在这个日期之前缓存都有效) Expires: -1 (表示不缓存) Last-Modified: 最近一次文件的更新时间 Etag:缓存文件的Hash值 也与浏览器操作有关: 如果是打开一个新窗口,当cache-control为private、no-cache以及must-revalidate时,会重新访问服务器;如果设置了max-age:num,那么在这段时间内是需要访问服务器的; 如果在URL输入地址访问,当cache-control为private、must-validate,第一次会访问,后面不会访问;max-age时过期时间内都不会访问服务器;为no-cache时,访问服务器; 如果是后退之后,只有no-cache才会每次都访问;其他的都不会访问; 如果是刷新页面,无论为何值,都会重复访问服务器。
CSS如何实现水平垂直方向的居中(Flex布局; Position结合margin负值实现)
- 比如一个模态框,右上角一个关闭按钮,样式就是一个圆圈,里面一个叉,不用Icon图标实现,纯CSS如何去实现?(利用伪元素以及字符的Unicode码)
- 原生JS如何实现继承?(原型继承,伪造对象方式)
- 讲了好几种继承,后来又问如果让你去实现一个new操作,原生JS如何去实现?
function Person(name){
this.name = name;
}
var obj = {};
Person.call(obj);
obj.__proto__ = Person。prototype;
return obj;
- 原生JS获取DOM节点的API有哪些?(getElementById, getElementByTagName, getElemmentByClassName, querySelector, querySelectorAll)
- document.ready和window.load有什么区别?(触发时机不一样;执行次数不一样)
- call、apply、bind函数的区别?
- 因为简历里有提到ES6,然后问ES6的新特性有哪些?提到箭头函数,又问箭头函数的作用是什么?箭头函数与普通函数有什么不一样?
- 也有提到React,问React的Diff算法是否有了解?
- 如果让你实现一个购物车,如何去实现?比如复选框,每个物品后面都有一个复选框,和最后也有一个全选的框,如何用原生JS去实现?记得之前看过一篇关于发布订阅模式的帖子,里面有用这个举例,不过想不起来具体怎么做的了
- 还有HTTP的Method有哪些?Get和Post有什么区别?如何理解幂等性和安全性?
- 最后是一个智力题,有若干条绳子,每一条材质都不均匀,并且不均匀程度也不一样,但每一根烧完都是一个小时。然后问怎么去测一个小时十五分钟的时间?
- 最后问如何去学习前端的?前端学了多久?对美团有没有什么认识?介绍了下我所报的部门的业务,我问了下技术栈。一面基本就这么多。