9.11 腾讯csig

1.图文上传流程
2.如何解决图片上传的负载
3.不同文件预览的挑战
4.讲一下自定义hook
5.讲一下Vue2 和vue3 的差异
6.vue3解决了vue2的什么问题
7.react对比vue的差异
8.了解性能优化,在网络层面讲一下优化
9.301 和 302区别
10.浏览器缓存的策略
11.具体是怎么触发缓存
12.css的动画中,给一个元素写一个动画,又给它绑定了js点击事件,会生效吗
13.反过来,js的代码会不会影响css
14.盒子模型,width:100 padding:100 宽度是多少

手撕:
对于一个数组(长度>=3)进行乱序排序,要求每个元素不会落到原来位置,且落到其他位置的概率相同:
function derangementShuffle(arr) {
  const n = arr.length;
  // 复制数组,防止修改原数组
  const shuffledArr = [...arr]; 
  
  // 1. 使用 Fisher-Yates 洗牌算法进行初步打乱
  for (let i = n - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [shuffledArr[i], shuffledArr[j]] = [shuffledArr[j], shuffledArr[i]];
  }

  // 2. 检查并纠正还在原位的元素
  for (let i = 0; i < n; i++) {
    // 如果当前元素还在原位,需要进行交换
    if (shuffledArr[i] === arr[i]) {
      let j = (i + 1) % n; // 从下一个位置开始找
      
      // 找到一个可以交换的元素
      while (shuffledArr[j] === arr[j] && j !== i) {
        j = (j + 1) % n;
      }
      
      // 进行交换
      [shuffledArr[i], shuffledArr[j]] = [shuffledArr[j], shuffledArr[i]];
    }
  }

  return shuffledArr;
}

// 示例
const originalArr = [1, 2, 3, 4, 5];
const derangedArr = derangementShuffle(originalArr);
追问:
这段代码的时间复杂度是多少

反问:
1.业务
2.几面
#腾讯##csig##前端##面试##凉经##大厂##秋招#
全部评论

相关推荐

练习时长两年半的小刺...:三面完等意向两周时间,从一面到意向差不多一个月了
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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