原文链接
笔者前段时间(2018.09-2018.10)参加面试,地点深圳,面试的岗位是NodeJS后台开发,工作年限是1 ~ 3年,面过的公司有1000人以上的大公司,一百人左右的中等公司,及20 ~ 50人的创业公司。
以下是一些对问到的问题的小结,希望对也要参加面试的朋友有些帮助,也欢迎补充。
文档的内容分为以下几部分:
- 技术类问题
- 人事问题
- 最后
技术类问题
主要分为JavaScript语言层面的、网络及规范、数据库、缓存、消息队列、开发流程等,有些问题相互交叉、水乳相融可能涉及到多项知识
JavaScript、Node.js
- 有没有用过
apply()
,bind()
,call()
这些方法,他们之间的区别 -
Promise
的几种状态、如何实现的、什么情况下catch
不到错误 - 有没有用过
async
、await
- 流程控制库
async
,自己在项目中常用到哪些方法;什么情况下会选择async
库,什么情况下选择Promise
;async
库是如何实现的(要阅读源码) -
Node.js
单线程、其应用场景,如何实现高并发,讲讲异步I/O、事件循环以及其优先级 -
Node.js
后台影响性能的瓶颈,如何避免,如何实现扩展 - 常用到哪些库(原生模块、第三方库)、模块加载的机制
- 常用到哪些框架,
express
、koa
的异同,选择用哪个框架的标准是什么
网络及规范
- 简要说说http协议
- tcp建立连接、释放连接的过程
- 说说RestfulAPI的规范
- 怎样保证代码质量(代码检查、单元测试、持续集成)
- 用到哪些设计模式
数据库
- 用过哪些数据库(MySQL、MongoDB、Redis)
- MySQL查询优化、索引、索引的原理
- MySQL库设计一个简单的论坛系统,画出用户表、帖子表、评论表的er图, 当用户量很大时,如何优化,缓存最多存一万条数据时如何优化
- MySQL的配置文件改过哪些参数
- MySQL及MongoDB如何选择,选择的标准是什么
- MongoDB的聚合函数,用到过哪些参数
- MongoDB的几种索引,数据量特别大时的分片
- 数据库的灾备(MySQL、MongoDB)
缓存(Redis)
- Redis的几种数据类型(string、set、list、sorted set、hash等)
- Redis主要用到哪些API
- 缓存在项目中的具体应用(主要针对项目经验来谈)
- Redis如何拓展(集群)
- 缓存更新的问题,当大量缓存同时过期时如何处理,缓存雪崩的问题
- Redis的持久化
- Redis为什么这么快、单线程
消息队列
- RabbitMQ的几种应用场景
- RabbitMQ交换机有几种类型,*号与#号的区别,举个例子
- Redis的订阅发布
开发流程
- 用到的测试框架(mocha)
- 代码覆盖率
- bug缺陷管理(JIRA)
- 版本控制(git、gitlab)
- 持续集成
- 敏捷开发
其他
- 公司技术方面的人员分配(前端、后台、运维、DBA、原生)
- 你认为你目前的团队或公司存在的问题(这是个坑,接下一个)
- 为什么没有试图去改变
- 目前你们公司4个node开发的,你认为你的水平在这四个人中排第几,依据是什么(这个问题好蛋疼)
人事问题
除了技术面试,人事的面试也是很重要,有些问题也不一定是人事问,可能是经理、或者老板问。
- 对我们公司有什么了解(虽然是海量投简历...但是收到面试的通知,还是应该对这家公司进行一些调查,查一下主营业务,看看其他人的面试评价,也可以评判下自己适合不适合)
- 上家公司为什么离职
- 期望进入什么样的公司(这个问题最好提离职时就能想好,不只是应付面试,更多的为了自己)
- 未来的职业规划(同上,要认真考虑,可以先有个短期的)
- 目前的薪资(有些公司可能需要提供银行流水,所以水分不要太大)
- 期望的薪资(直接给个确切的数吧)
- 平常喜欢做什么
- 能不能接受加班、最晚能加班到几点(这个问题感觉好虚)
- 什么时候到岗(巴不得第二天就去报道的,要考虑清楚,一般都会等一个月)
最后
换工作前还是要弄明白自己想要什么,期望在下家可以收获什么,跳槽虽然能涨工资,但是不要过于频繁。
找工作真的是一件很辛苦的事情,简历被拒、笔试没过都是很令人受打击的,等待面试结果的过程也很受煎熬。但确实是一个学习,了解自身不足的契机。
希望这篇文章能给准备面试的你有一些帮助。
网友评论