腾讯前端面试
QQ音乐
一面(70分钟):凉了
- 自我介绍、对腾讯音乐相关产品有了解过吗、城市、职位调剂、对前端的理解
- 项目,三个项目都问了
- 第一个项目为什么要配置 https
- 第二个项目你主要做了什么
- 最近的项目,说一下 jwt 和为了像分布式演进啥意思(面试官说这叫微服务)
- 看你说懂 linux,那你说一下 elf 可执行文件如何被 linux 加载成为一个进程
- 专业是物联网工程,课程和计算机有什么区别(想问你基础课了)
- 操作系统
- 进程线程的区别(哪个是最小调度单位,哪个是最小资源分配单位,操作系统可以可以为线程分配资源吗)
- linux系统的启动过程(init进程)
- 数据库
- 什么是触发器和存储过程
- 什么是事务
- 事务有哪些特性
- 计算机组成原理
- 说一下计算机中有哪些存储器
- 网卡上的数据是如何被转移到内存中的
- 计算机网络
- 一道算法题(20分钟)
- 你还有什么想问的吗
腾讯视频
一面
- 全程45分钟,首先自我介绍,面试官人很好,腾讯视频会议
- 你觉得做这个项目中最难的地方是什么(我答得登录功能得设计:安全问题,jwt各种异常状态信息)
- 那说说jwt把信息保存在客户端,如何保证数据安全(jwt中我只存放了非敏感数据)
- jwt为了解决cookie跨域问题,那说说具体的跨域解决方案(cors,nginx反代,jsonp)
- 你为什么使用egg这个node框架(从技术栈选型,对比express和koa角度说)
- 构建工具有用过吗?除了webpack以外呢?有自己完整的配置过webpack吗?
- node什么情况会内存泄漏,内存泄漏了怎么办,浏览器的performace如何查看node内存状态
- node的web server如果有大量的http请求,内存会不会飙升,为什么
- 如果让你设计node的web框架,你会原生写还是基于koa这些(我说基于koa,吸收它中间件模型的设计)
- koa相较于express,为什么要为每个请求创建一个context对象(我说便于跟踪处理和连续处理一个http请求)
- 说说http的链接建立过程(说http基于tcp,tcp三次握手,然后request,response)
- http请求最常用,那如果有人抓包分析请求怎么办,中间人攻击(https,ssl/tls套接层加密)
- 除了中间人,还有哪些常见的web攻击,并说说解决方案(xss,csrf)
- 你是如何进行代码流程的管理(其实想问,如何code review,如何单元测试,如何管理多人协作)
- 你是自学的还是学校教的
- 你还有什么想问的问题(部门的业务,面试官有什么建议)
二面
- 全程40分钟左右,腾讯会议,他没开视频,感觉有点严厉,首先自我介绍
- 开始问项目,平时做的作品或者博客链接有吗?丢一个给我(我竞赛小助手)
- 这个是项目,代码放在什么地方,gitee上吗?有没有链接(我直接将后端链接丢给他了)
- 简单说一下这个项目吧(我从项目的出发点开始说,被打断)
- 我不关注这些,我关注的是你的代码,你说一下技术上你是怎么做的(vue,egg,mysql)
- 项目中有什么难点吗?token串被人劫持怎么办?(登录的jwt封装逻辑)
- 项目中你最大的收获是什么?(我说一个项目设计的角度的收获,从前端交互逻辑到后端api,从后端api到数据库设计)
- 那你说说数据库有哪些范式吧(数据库三范式)
- 我看你说项目中有跨域,我没看见2个域名啊(我说端口跨域了,80端口到3001)
- 端口跨域不是有一些很简单的方法就可以解决吗?为什么不放到同一个端口?(我说了cors解决的,如果放同一端口可以用nginx做反代)
- 还有其他跨域解决方案吗?(jsonp)
- jsonp有什么缺点和限制?(其实面试官想让我说iframe设置domain跨域,解决引入三方模块时的跨域问题,我觉得这是服务提供商的问题,我就没说这种解决方案)
- 看你首页图片较多,你有做什么优化加速访问吗?你是如何定位这个性能问题的?(我说用了cdn,但是没有分离静态文件,图片懒加载,base64)
- 有写过一些浏览器的渲染工具吗?(这是啥?果断没有)
- 为什么不把图片这些静态文件直接放到cdn上代理(说了一下cdn如何进行图片传输优化的)
- 加微信写算法题:求一个正整数数组,数组长度为10,输入一个sum,求出数组中元素相加之和等于sum的所有组合
- 说一下你的思路是什么(穷举,用位图表示是否选中,然后求和和目标值比较)
function getResult(array, aimSum) {
for (var i = 1; i < 1 << 10; i++) {
var sum = 0;
var temp = "";
for (var j = 0; j < 10; j++) {
if ((i & 1 << j) != 0) {
sum += array[j];
temp += array[j] + "+";
}
}
if (sum == aimSum) {
var t = temp.split('+')
var p = [];
for (var j = 0; j < t.length; j++) {
if (t[j] != '') {
p.push(t[j])
}
}
console.log(p)
}
}
}
var testArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
var sum = 6;
getResult(testArr, sum);
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。