美团面试总结

面试前的准备

接到面试通知的电话一阵兴奋,随即网上查了一下别人面试美团的面经,发现面试的范围相当广泛,又有学长说美团面试喜欢当场写代码,数据结构算法什么的都有,虽然有点担心过不了,可是一想到要去北京面试就好兴奋~
接到电话当晚就把之前整理问题的本子拿了出来,从头到尾把这些之前的面试中问到过的方面都浏览一遍,然而真的是看到的越多就越觉得自己掌握的太少太少。为了能安慰一下自己激动而又紧张的的小心脏,上火车前给手机浏览器里打开了一大堆的网页,全是干货,留给车上的十四个小时慢慢消化。

面试中的部分题目

  • 普通的HTTP请求和XHR请求对cookies处理的区别
    对浏览器来说,cookies每次向服务器发送请求时会自动携带,但是XHR请求默认是不携带cookies,在需要时手动设置。

  • 如何利用cookie拿到session
    由于HTTP是无状态的,但是很多网站在用户访问时常常需要用户维持登录状态,所以目前大多数站点采用基于cookie的session管理策略来维持对话,也就是说,session是通过cookie来实现的,用户登陆成功后,设置一个唯一的cookie标识本次会话并基于该标识对用户授权,只要请求中带有这个标识,都认为是登录态。也就是说,如果攻击者获取到了cookie,Ta就可以拿到session。之前以为session和cookie是在两端分别管理的,没有考虑过分布式的问题,这是不对的。

  • RESTful 的用户鉴权
    RESTful API 设计最佳实践
    身份认证一般使用OAuth框架,在header中携带鉴权access_token。这块儿不熟,还得好好学。

  • CSS3 animation动画如何再一次触发
    animation动画只应用在页面上已存在的DOM元素上,不需要动作去触发,这就意味着要是不设置循环播放的话它就只能播放一次。但是,如果把持有动画的这个元素中和动画相关的类去掉,在添加上,就可以实现动画的再一次触发。

  • 如果一个项目使用jQuery的选择器,进行了一半后要弃用jQuery怎么处理
    第一感觉是改用Zepto,体积小而且选择器和jQuery一样,还有就是自己把原生的JS DOM API封装一下。

  • cookie存储超出了会怎样
    一般浏览器允许的cookie大小在4KB左右,不同浏览器之间会有细微的差别。cookie大小超出限制的时候都不予设置。
    还见到过这个:

    当很多的cookie被设置,浏览器如何去响应:
      除Safari(可以设置全部cookie,不管数量多少),有两个方法:
      最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。Internet Explorer和Opera使用此方法。

      Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:在Firefox中不要超过Cookie限制)。

不同浏览器间cookie总大小也不同:
  Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。
  Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。
  Internet Explorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。
注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。

  • localstorage的大小限制、如何判断达到临界值
    localstorage的大小一般在5MB左右(每个域名独有,不能跨域访问),而且存储的数据理论上来说只要不手动清除就永久存在,但在WebView之类的场景里可能会由于应用退出、内存不足而被清理掉。
    JSON.stringify(localStorage).length可以查看当前使用了的大小,用5M减一下可以得出粗略的剩余大小(但是很不精确),超出的话数据就存不上了。

有一个写代码的题是写一个function,传入金额和红包个数,返回一个分配好金额的红包数组。

还问了一个JS继承的问题,答的不好,研究一下单拿这个问题写个总结吧。

以上回答均为个人观点,如有不对请指出~

面试总结

想想自己从学前端到现在,大部分的关注点都在移动web上,偶尔几个PC端页面也会有意无意地做成响应式来适配移动端。学习前端是兴趣驱动,因此比较多地关心应用而对一些基础细节的关注明显不够,需要更系统地过一遍。前端可以大且全也可以小而美。
1. 基础
2. 知识的扩展和灵活运用
3. 不要太内向

你可能感兴趣的:(总结)