前端社招面经-启心明智(一面)

面试流程

  1. 自我介绍
  2. 考察算法题的测试(2道题)
  3. 考察前端相关知识

面试题目

  1. 了解HTTP版本嘛?说一下HTTP1.0被优化掉哪些缺点。
  2. 说一下SSL的作用?
  3. 说一下浏览器缓存?
  4. 说一下localStorage和sessionStorage?
  5. 说一下cookie和session?
  6. let、var的区别,什么是块级作用域。
  7. 说一下闭包吧。
  8. 说一下内存泄漏。
  9. 说一下防抖和节流。
  10. 了解Promise吗?回调地狱
  11. 安全专业,为什么选择前端这个方向?
  12. 是哪里人?
  13. 面试官介绍项目(面试官非常专业和认真👍)

算法代码题目

  1. 阶乘:实现阶乘
//接受值,n return  阶乘的和
function fun(n) {
  let sum = 0;
  let temp = 1;
  for (let i = 1; i <= n; i++) {
    temp *= i;
    sum += temp;
  }
  return sum;
}
  1. 动态规划:一个数组里有一堆数,算出能否从其中取出两组数,两组的和相等,这两组数不用数组中的每个元素都参与,这两组的个数不定顺序不定。即,判断能否从给定的一个数组中,取出两个不相交的子集,并且这两个子集和相等,但是数组中的可能存在一些并没有被这两个子集所选取的元素。
dp[i][j] = dp[i - 1][j] || dp[i - 1][j - nums[i - 1]];
function canPartition(nums) {
    let sum = 0;
    for (let num of nums) {
        sum += num;
    }
    if (sum % 2 !== 0) {
        return false;
    }
    let target = sum / 2;
    let n = nums.length;
    let dp = new Array(n + 1).fill(0).map(() => new Array(target + 1).fill(false));
    dp[0][0] = true;
    for (let i = 1; i <= n; i++) {
        for (let j = 0; j <= target; j++) {
            dp[i][j] = dp[i - 1][j];
            if (j >= nums[i - 1]) {
                dp[i][j] |= dp[i - 1][j - nums[i - 1]];
            }
        }
    }
    return dp[n][target];
}
全部评论
第二题dp题解不是在求有没有均分的子数组和吗,题目里要求只是相等的子数组和吧🤔
点赞 回复 分享
发布于 2023-04-04 12:37 北京
这算法题考的是真难啊
1 回复 分享
发布于 2023-04-04 22:36 天津
现在不是大厂都开始考算法了吗
点赞 回复 分享
发布于 2023-04-20 14:59 上海

相关推荐

1 23 评论
分享
牛客网
牛客企业服务