小菜鸡面试の初体验,自闭路上渐行渐远......♂️

前言

本人现在大三菜鸡,想在暑期找一份实习锻炼锻炼自己,所以也去投了一下简历试了试面试emmm感觉自己还是太菜了呜呜呜,真的还得加强一下自己才行,特别是算法方面,太吃亏了呜呜呜。大家最近赶快投!!提前批!挂了也不会计入系统!以后再努力努力!!冲鸭!!

有兴趣可以看看俺整理的知识点或许有所帮助呢~祝大家早日实习上岸!!! juejin.im/post/5e5a75…

顺便安利一下小项目~嘻嘻嘻,希望走过路过给个star!

由衷感谢 CVTE 让我技术面都过了呜呜呜,明天HR面,希望不要让我挂了呜呜呜,可怜巴巴

“我自己是一名从事了6年web前端开发的老程序员(我的微信:web-xxq),今年年初我花了一个月整理了一份最适合2019年自学的web前端全套培训教程(视频+源码+笔记+项目实战),从最基础的HTML+CSS+JS到移动端HTML5以及各种框架和新技术都有整理,打包给每一位前端小伙伴,这里是前端学习者聚集地,欢迎初学和进阶中的小伙伴(所有前端教程关注我的微信公众号:web前端学习圈,关注后回复“2020”即可领取)。

总结

  • 提前总结一下吧,这些面试让我感觉到emmm,他们都比较重视计算机网络网络安全框架原理方面的知识,HTTP协议TCP握手各种网络方面的东东...... 啊好多好多啊基础部分,每次都能问到新的不会的东东,爆哭

  • 总之吧emmm还是基础得打好,框架原理还有node方面也需要重视。然后面试官会审视简历,大多会根据简历来问。所以不熟的没把握的千万不要写在简历上!!!

  • 其次就是如果有自己的小项目就最好啦,面试官基础部分了解过后就会对项目进行提问啊,问问有什么亮点,自己遇到的难点,如何解决。他们很重视解决问题的能力。不过如果项目有明显的的不合理的地方或者不足,他们就会抓出来进行提问,问你将来怎么解决的之类的。

  • 一般会问你是如何学习前端的,然后最近在看什么文章,最近在了解什么新的知识热点等等,平时的积累也是挺重要的,然后也会根据你说的内容来进行提问,所以有能力的话也可以视图引导面试官来提问你擅长的地方哈哈哈哈(手动狗头)

问的东西都偏向于基础,然后慢慢升华一下,到项目,到思维扩展,实际情景的应用等等。面经内容不全,大概就是这些吧!!哈哈哈凑活着看看!或许有帮助!

CVTE 一面(过)

电面,面试官很和蔼hhhh,全程都是以聊天的方式进行下去,问了一下项目也给了一些意见。哈哈哈哈印象最深的就是一直问我觉得自己哪里牛逼哪里牛逼hhhh

  1. HTTP1.1 HTTP 2.0
  2. TCP与HTTP有何区别
  3. TCP为何要三次握手
  4. 父元素绝对定位,子元素设置绝对定位,也可以生效吗
  5. 调试工具的performance和network
  6. js阻塞(<script> <link>
  7. webpack流程
  8. es6
  9. 箭头函数this指向
  10. 事件监听中普通函数与箭头函数的this指向
  11. cookie
  12. localStorage能替代cookie吗
  13. 网络攻击csrf和xss
  14. 浏览器缓存
  15. etag与last-modify谁优先级高,为什么
  16. 不定宽高水平垂直居中
  17. 闭包
  18. 自执行函数
  19. for每隔时间打印数字
  20. cookie一般用来干什么
  21. H5特性
  22. url输入到渲染发生了什么
  23. React的事件机制
  24. 事件循环
  25. setTImeout一定准时吗
  26. 行内元素与块级元素

CVTE 二面(过)

视频面,这一面还是有点紧张的,突然看见一个戴着口罩的小帅哥,但就聊了聊,然后还是主要说的项目,然后针对项目的功能问了几个问题,也发现几个不足的地方,提出了挺多的建议的,很感谢这个面试官,看我做不出来算法题也很有耐心给我指导,感动,有一些细节的地方,深入理解的部分,见到我不会也不会为难我,就大概跟我解释一下,很棒!

  1. 为什么学前端
  2. 做过什么项目吗
  3. React的坑
  4. hooks
  5. 为什么React不学Vue做双向绑定
  6. React单向数据流有什么好的地方
  7. 跨域
  8. cors的options(如何缓存)
  9. localStorage如何设置过期时间
  10. 你如何判断登陆态过期
  11. 为什么不用cookie,用cookie有什么不好的地方
  12. http-only
  13. 如果聊天室发送消息网络卡顿,导致消息记录的时间错乱怎么办
  14. 你的项目封装了什么组件
  15. 了解node吗
  16. 事件循环有什么不同
  17. node的优势
  18. flex改变方向
  19. 垂直居中
  20. 原型链,有什么用,怎么判断
  21. 为什么nodejs是非阻塞的
  22. 如何判断一个方法是对象自己的还是原型链上的(hasOwnProperty)
  23. 算法题
// 根据实例输入输出矩阵规律完成以下 matrix 函数:
function matrix(n) {

}

matrix(n).forEach((item, i) => {
    console.log(item);
});


// 示例 1
// 输入: 3 or 4
// 输出: 
// [ 0, 2, 0 ]
// [ 2, 1, 2 ]
// [ 0, 2, 0 ]

// 示例 2
// 输入: 5 or 6
// 输出: 
// [ 0, 0, 3, 0, 0 ]
// [ 0, 3, 2, 3, 0 ]
// [ 3, 2, 1, 2, 3 ]
// [ 0, 3, 2, 3, 0 ]
// [ 0, 0, 3, 0, 0 ]

// 示例 3
// 输入: 6 or 7
// 输出: 
// [ 0, 0, 0, 4, 0, 0, 0 ]
// [ 0, 0, 4, 3, 4, 0, 0 ]
// [ 0, 4, 3, 2, 3, 4, 0 ]
// [ 4, 3, 2, 1, 2, 3, 4 ]
// [ 0, 4, 3, 2, 3, 4, 0 ]
// [ 0, 0, 4, 3, 4, 0, 0 ]
// [ 0, 0, 0, 4, 0, 0, 0 ]
复制代码

还是算法吃亏,这题没有写出来,面试官给了点思路,提示只需要搞定四分之一,然后可以进行翻转,虽然提示了,但还是做不出哈哈哈,面试完之后试了试才做出来(感谢面试官不挂之恩!)

以下是根据面试官给的提示做出来哒,就是先算好四分之一,然后进行翻转拼接

function matrix(n) {
  // 求长度
  let len = Math.ceil(n / 2)
  let arr = Array.from({ length: len }, _ => Array.from({ length: len }, __ => 0))
  let temp = null
  // 算出四分之一的矩阵
  for (let i = 0; i < len; i++) {
    for (let j = 0; j < len; j++) {
      if (i + j >= len - 1) {
        arr[i][j] = len * 2 - i - j - 1
      }
    }
  }
  // 水平翻转,搞定上半部分
  for (let row = 0; row < len; row++) {
    temp = [...arr[row]].reverse().splice(1)
    arr[row] = arr[row].concat(temp)
  }
  // 垂直拼接
  temp = [...arr].reverse().splice(1)
  arr = arr.concat(temp)
  return arr
}
复制代码

字节跳动 (等一封感谢信呜呜呜,为什么不让我死心!)

视频面,还是算法吃了大亏嗷,全程题面,然后解释各种知识点,提问等,算法给了提示还是做不出来,唉,太蠢了
(为什么还不给我感谢信!!!让我有种错觉可以被捞!!!)

是在官网投的日常实习生,也不知道是不是因为不是内推的原因,自己感觉必挂了,但感谢信迟迟不到,爆哭,好歹呜呜呜我也...努力过嘛,哭(啊,算法!洗内!)

大概记得的就这些主要的吧

  1. block元素水平垂直居中

这里我采用了两种,一种是translate + absolute,另一种是在修改body样式用flex,这里注意一定要把body的height设置为100vh不然会垂直居中不了

<body>
    <div class="block"></div>
</body>
复制代码
  1. 读代码解释原因,然后说出浏览器事件循环与node事件循环等知识点
console.log('begin')
setTimeout(() => {
  console.log('setTimeout 1')
  Promise.resolve().then(() => {
    console.log('promise 1')
    setTimeout(() => {
      console.log('setTimeout2 between promise1&2')
    })
  }).then(() => {
    console.log('promise 2')
  })
}, 0)
console.log('end')

// 答案是
/*
  begin
  end
  setTimeout 1
  promise1
  promise2
  setTimeout2 between promise1&2
*/
复制代码
  1. 实现求和(柯里化)
sum(1)(2)(3).sumOf() // 6
sum(1, 2)(3).sumOf() // 6
sum(1, 2, 3).sumOf() // 6

// 一下为答案
function curry() {
  let argsList = [...arguments]
  let fn = function () {
    argsList.push(...arguments)
    return fn
  }

  fn.sumOf = () => argsList.reduce((a, b) => a + b)

  return fn
}

let sum1 = curry()
let sum2 = curry()
let sum3 = curry()

console.log(sum1(1, 2, 3).sumOf())
console.log(sum2(1)(2)(3).sumOf())
console.log(sum3(1, 2)(3).sumOf())
复制代码
  1. 读程序,并解释为什么,然后说一下上下文之类的各种知识

这里被坑了,没有注意到函数传了一个a进去哈哈哈哈,然后说成了9 18 27,尴尬~

var result = []
var a = 3
var total = 0
function foo(a) {
  var i = 0
  for (; i < 3; i++) {
    result[i] = function () {
      total += i * a
      console.log(total)
    }
  }
}

foo(1)
result[0]()
result[1]()
result[2]()

// 答案是 3 6 9
复制代码
  1. 算法,实现全排列
输入"abc"返回他的全排列组合

以下为答案
var permute = function (nums) {
  let path = []
  let visited = Array.from({ length: nums.length }, _ => false)
  let res = []
  DFS(nums, 0, nums.length, path, visited, res)
  return res
};

var DFS = function (nums, curSize, len, path, visited, res) {
  if (curSize === len) {
    res.push([...path])
    return
  }

  for (let i = 0; i < len; i++) {
    if (!visited[i]) {
      visited[i] = true
      path.push(nums[i])
      DFS(nums, curSize + 1, len, path, visited, res)
      visited[i] = false
      path.pop()
    }
  }
}
复制代码
  1. 智力题:A,B抛硬币,正面赢,A先手,A赢得概率是多少

这个完全懵逼嗷,大家觉得是多少呢!


阿里 - 不知名部门(暴毙)

电面,这个十分可惜,还没开始准备直接暴毙

  1. React原理
  2. cookie的属性
  3. localStorage和sessionStorage的区别
  4. localStorage能跨域吗
  5. 重绘和回流
  6. httponly
  7. csrf 和 xss

阿里钉钉 - 主要为小程序(不合适)

视频面,主要聊了项目,然后问了比较多网络,以及安全的问题,团队主要是做小程序的,问了挺多小程序的东东,直接懵逼,主管还是猛嗷呜呜呜

  1. 小程序原生api
  2. https加密原理
  3. 好的登录态的实现
  4. React的优势
  5. setState之后发生了什么
  6. React性能优化
  7. hook的原理(如何实现)
  8. 小程序运行池
  9. 微信浏览器有什么区别
  10. Taro编译的原理
  11. 事件代理(捕获阶段可以吗)
  12. React的事件委托到哪

阿里CBU(初面)

电面,感觉怪凶的哈哈哈,前面问的好好的,突然问起了Vue瞬间暴毙,原来是看到我简历上描述有个项目使用Vue开发所以问,以后一定不能吧这些不熟悉的放在简历上了!

  1. 事件委托
  2. 深浅拷贝的区别
  3. Object.assign
  4. BFC
  5. Fiber
  6. virtual dom
  7. diff算法
  8. hook
  9. webpack流程
  10. webpack打包出来的js的结构,内容是什么
  11. babel编译原理
  12. node的优势
  13. node中,async/await,generator,promise的区别,联系
  14. 多用户来访问聊天服务器,你有1000台服务器,应该怎么办(坑啊)
  15. Vue双向绑定如何实现
  16. Vue数据流
  17. Vue与React的区别
  18. 一堆Vue.... (还说了句,你不会的还往简历上写?以后不敢了!哭)

阿里飞猪(初面)

电面,这个是聊得最久的呜呜呜,手机都烫了!面试官很好人,emmm就真的很棒棒,全程不会刁难你的那种,不会咄咄逼人,就一直引导你思考,然后问道深入的点,不会的话他也会说没关系~感兴趣的话去了解了解就行了,十分nice啊。
最后根据项目聊了很多也,然后给了很多建议,指出有些地方还可以改进改进,然后我也厚着脸皮问了问之前面试官问我的一到开放题。没想到他竟然给我分享了好多好多种办法,真的太感动了,真的好强好厉害,很详细的告诉以后往什么方向去做,然后如何去思考,如何去实现,最后花了挺长时间来介绍他们的部门,真的很棒!

  1. 输入url到页面渲染展示
  2. DNS如何解析
  3. 输入域名如何转换为ip地址,然后转到服务器
  4. gzip原理
  5. cookie localStorage sessionStorage
  6. cookie与token的本质区别(session)
  7. 闭包 及其常见的应用场景
  8. 缓存
  9. 强缓存如何存
  10. 过期时间等参数浏览器是如何获取的
  11. 服务器如何设置缓存设置头
  12. 缓存的场景
  13. call apply区别
  14. React的事件机制
  15. virtual dom
  16. hooks的优势,为何被喜欢,常用的方式
  17. React数据流
  18. HOC,优势及其常用方式
  19. setState获取更新的值
  20. csrf 和 xss
  21. flex布局,及你常用的方式,兼容性
  22. 前端性能优化(你用过的)
  23. node异步的历史(答了async/await, generator)
  24. webpack流程
  25. webpack-dev-server原理
  26. webpack配置项与常用插件
  27. ES6的语法,及你常用的
  28. Mobx的原理
  29. 盒模型与怪异盒模型
  30. HTTP报文结构,请求头有啥,响应头有啥
  31. 最近看什么书,看什么文章,打算考研吗
  32. 栈,队列
  33. 10万个数字找最大的K个数(描述了快排,及如何实现,时间复杂度,最好,最差的情况下)
  34. DFS与BFS,如何实现
  35. 小程序与H5的区别,商业性、技术性(小程序有自己独立的保护机制,独立运行在一个地方,不会破坏现有生态)
  36. nginx怎么配置
  37. 阿里云dns怎么配置解析(A?TXT?)
  38. 箭头函数和普通函数
  39. 按钮设置监听用箭头函数this指向哪
  40. jwttoken
  41. 服务器开启服务(nohup,pm2)
  42. Taro编译原理
  43. typescript优势,为何收到推崇

腾讯(捞错了...)

啊,暴毙,在官网投的web前端,结果发来的邀请函却是后台开发,啊虽然被捞起来很开心,但是呜呜呜不是期望的岗位鸭!哭

发布了184 篇原创文章 · 获赞 276 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_38004595/article/details/104597049
今日推荐