携程前端实习一面面经

携程前端一面

  1. 介绍项目

  2. Vuex五个概念

  3. Vuex中的数据存在哪儿,刷新页面后会怎样

    • 页面内存中,刷新后丢失

  4. Vuex原理

  5. Vuex与Redux区别

  6. 队列动画如何实现

    • 列表渲染时根据下标设置不同的动画延迟时间

  7. CSS开启硬件加速的方式

  8. localStorage与vuex区别

    • 存储位置,数据是否响应式

  9. 实现24小时内只弹出一次弹窗

    • 本地存储结合计时

  10. 元素层级关系

  11. 正则实现数字千分位表示

    • let num = "12345678"; let reg = /(?!^)(?=(\d{3})+$)/g; console.log(num.replace(reg, ",")); 
  12. 如何处理图片像素

    • 先根据Image构造函数实例化一个image实例

    • 通过canvas实例的drawimage方法绘制该图片

    • 再由canvas实例的getImageData获取图像数据

    • 处理完像素后,通过canvas实例的putImage重新绘图

    • 例如,将图像置灰

    • <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta content="IE=edge" http-equiv="X-UA-Compatible">
          <meta content="width=device-width, initial-scale=1.0" name="viewport">
          <title>Document</title>
      </head>
      
      <body>
      </body>
      <script>
          const canvas = document.createElement('canvas')
          const ctx = canvas.getContext('2d')
          const image = new Image()
          image.src = './22222.jpg'
          image.onload = function () {
              canvas.width = this.width
              canvas.height = this.height
              // 绘制图片到canvas容器
              ctx.drawImage(image, 0, 0, this.width, this.height)
              // 获取图片信息
              let imageData = ctx.getImageData(0, 0, this.width, this.height)
              let data = imageData.data
              // 操作图片像素
              for (let i = 0; i < data.length; i += 4) {
                  let average = (data[i] + data[i + 1] + data[i + 2]) / 3
                  data[i] = average
                  data[i + 1] = average
                  data[i + 2] = average
      
              }
              // 重新绘图
              ctx.putImageData(imageData, 0, 0)
              document.body.appendChild(canvas)
          }
      </script>
      
      </html>
      

  13. 如何用JS压缩图片

    • 借助canvas

    • 例如

    • import { message } from "antd";
      
      const fileReader = new FileReader();
      const compress = (file: File): Promise<File> => {
        return new Promise((resolve, reject) => {
          if (!file) {
            message.error("请先选择图片!");
            reject();
          }
          if (file.size > 10 * 1024 * 1024) {
            message.error("请上传10M以下的图片!");
            reject();
          }
          // 压缩一兆以上图片
          if (file.size > 1024 * 1024) {
            let rate = 0.2;
            fileReader.readAsDataURL(file);
            let img = new Image();
            fileReader.onload = function() {
              img.src = fileReader.result as string;
            };
            img.onload = function() {
              let canvas = document.createElement("canvas");
              let context = canvas.getContext("2d");
              // 文件大小KB
              const fileSizeKB = Math.floor(file.size / 1024);
              // 配置rate和maxSize的关系
              if (fileSizeKB * rate > 3027) {
                rate = Math.floor((3027 / fileSizeKB) * 10) / 30;
              }
              // 缩放比例,默认0.5
              let targetW = (canvas.width = img.width * rate);
              let targetH = (canvas.height = img.height * rate);
              context?.clearRect(0, 0, targetW, targetH);
              context?.drawImage(img, 0, 0, targetW, targetH);
              canvas.toBlob((blob) => {
                const newImage = new File([blob as Blob], file.name, {
                  type: file.type
                });
                resolve(newImage);
              });
            };
          } else {
            resolve(file);
          }
        });
      };
      export {
        compress
      };
      

  14. 移动端适配

  15. svg是什么

  16. svg绘制椭圆

    • <svg>  <ellipse cx="200" cy="90" fill="#ccc" rx="100" ry="50" stroke="#333" stroke-width="2px"/> </svg>
  17. 图片的几种格式以及区别

  18. flex: 1 0 100px代表什么

  19. 反问

#春招##实习##面经##携程##前端#
全部评论
想问下小哥哥vuex原理你答了啥
点赞 回复 分享
发布于 2023-02-18 02:00 广西
老哥通知二面了吗
点赞 回复 分享
发布于 2022-03-22 19:11
你这应该是研究生吧,而且简历里做过一些图像处理相关的项目?
点赞 回复 分享
发布于 2022-03-22 16:05
文yyds
点赞 回复 分享
发布于 2022-03-21 10:20
这也太强了
点赞 回复 分享
发布于 2022-03-19 14:19
楼主都回答上来了吗
点赞 回复 分享
发布于 2022-03-18 18:39

相关推荐

09-17 10:12
已编辑
门头沟学院 前端工程师
查看13道真题和解析
点赞 评论 收藏
分享
09-16 17:03
已编辑
杭州电子科技大学 Web前端
南京“特种兵”一日游,开心捏~早上六点半起床赶八点地铁,晚上十一点回杭,十二点到家。旅途拍了总统府,喝了茶颜悦色,吃了牛蛙套餐,还有豚厂的发的麦麦,好吃。一面面试官非常和蔼可亲,并且非常有礼貌,全程亲切有笑意,直接让紧张心情放松了。全程拷打项目,可能因为项目内容比较多(实习疯狂偷产出),拷打了挺久,主要在问项目架构和细节,讲清楚项目怎么做的就好。(这里感谢之前同花顺对我项目的拷打,让我明白了自己项目阐述的不足,从而恶补了这方面的问题)中间问了几道简单的八股,本来应该还想问点react相关的,但是听了我对常用的hooks回答后,就放弃了,直接说“那么,再问问……好吧,算了”(对react八股确实没咋准备TUT)最后和面试官聊hi了,讨论了些公司技术选型类似的内容,两人都聊的很开心。二面白白净净的面试官,很年轻,但看上去很严肃。先是拷打一面之外的简历细节(技术栈),然后问了些性能优化之类的题目。中间直接问麻了,githooks自己配置实际上没成功就搁置了,结果面试官往死里追问细节,直接问的汗流浃背,当时真觉得完蛋了哎大概题目如下:githooks的配置(技术栈内容)&nbsp;&nbsp;❌git常用的命令与场景?如何解决冲突的?&nbsp;✅prettier如何配置?(技术栈内容)✅eslint如何配置?(技术栈内容)✅讲讲常规的ui性能优化手段?✅&nbsp;——懒加载、base64、精灵图图片懒加载的实现?v-lazy的原理?❌为何要用base64?✅将500*500的图片资源放到200*200的img中,你会怎么操作减小图片?❌——我回答img拉伸,div&nbsp;background-size拉到100%,面试官说不对。常见的遍历循环手段?foreach能不能用break?为什么?那应该如何跳出循环?✅for下标遍历和foreach哪个效率高?为什么?(感觉这边重点考思路)✅字符类型和数字类型加减问题(没准备捏)❌事件循环简单题,判断并解释&nbsp;✅tcp握手步骤,为何要三次握手?✅手撕,讲思路即可,两道lc&nbsp;hot100变种,时间空间限制:寻找k大数,还有一道忘了对应哪道了,就是O1找1-n个数组里没出现的正整数啥的。✅什么时候接触前端?为什么选择前端?你的优势?如何学习新知识的?以为二面面完没了,没想到还是给过了,感谢两个面试官的好心肠,也感谢携程hr们热心的发零食~总的来说,线下难道确实比线上难度小(也有可能运气比较好),好好打磨简历磨练细节,问题都不大,感觉下午听到过的还是挺多的。但是估计二面面评不高,泡池子咯~
面试问题记录
点赞 评论 收藏
分享
A面&nbsp;33min一、项目与实习经历自我介绍实习相关问题七八个二、前端基础与编程能力forEach&nbsp;循环中能否使用&nbsp;break?如果不能,如何提前退出?在&nbsp;forEach&nbsp;循环中使用&nbsp;await,循环是否会等待异步操作?对于大数据集(如10万条),哪种循环方式性能最优?为什么?for&nbsp;循环和&nbsp;map&nbsp;循环有什么区别?1&nbsp;+&nbsp;&amp;quot;1&amp;quot;&nbsp;-&nbsp;1&nbsp;的输出结果是什么?是否使用过&nbsp;TypeScript?与&nbsp;JavaScript&nbsp;的主要区别是什么?TypeScript&nbsp;有哪些面向对象的特性?三、计算机网络TCP&nbsp;为什么需要三次握手?如果第三次握手的&nbsp;ACK&nbsp;丢失,如何补偿?具体重传机制是什么?四、手撕(只说了思路,没真写代码)在一个万级乱序整数数组中,如何高效找到中位数?如何在不使用额外存储空间的情况下,将英文句子倒序(单词顺序倒序,单词本身不倒)?在一个1到N的乱序数组中,N未知,有重复和缺失的数字,如何找出所有缺失数字?要求时间&nbsp;O(n),空间&nbsp;O(1)。五、个人与岗位匹配你是什么时候开始接触前端的?为什么选择前端方向?哪些方面吸引你?你认为自己哪些特质适合前端岗位?忘记反问base和部门就跑了😅因为沉迷丝之歌一直没准备秋招,本来不打算参加携程线下面试,但是hr强烈推荐线下,线下通过率会高一些,并且优先发线下offer,剩余hc再线上,所以还是来了,只仓促背了一天半八股,基本没怎么刷题,想被狠狠挂掉督促自己学习()秋招首战,第一次参加线下面试,因为基本没怎么准备,抱着完蛋了来都来了要吃回本的心情,很松弛地爽爽吃,轻松上阵。面试官很和善,其实很多八股都没回答上来,滑跪很快,放线上面试估计要完蛋,线下还是很善良地过了。面试流程如图1,由于牛客活动,所以B面另起一篇看首页
发面经攒人品
点赞 评论 收藏
分享
评论
9
28
分享

创作者周榜

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