携程前端实习一面面经

携程前端一面

  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

相关推荐

06-26 17:24
已编辑
宁波大学 golang
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
评论
9
28
分享

创作者周榜

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