前端跳槽面试技巧

317 阅读21分钟

1.面试准备

  1. JD描述分析(职位描述+任职要求)
  2. 业务分析或实战模拟
  3. 技术栈准备
  4. 自我介绍(简历+自我陈述 --> 面试沟通方向)

2.模拟一面/二面

主要涉及:(1)页面布局 (2) css盒模型 (3) Dom事件 (4)http协议 (5)面向对象 (6)原型链 (7)通信 (8)安全 (9)算法

2.1 页面布局

题目1:高度已知,三栏布局,左栏右栏各为300px,中间自适应

<section class="wrapper">
    <div class="left">
    <div class="right">
    <div class="center">
</section>
<style>
// 1.浮动解决方案
.wrapper{
   height:100px ;
   .left{ float:left; width:300px }
   .right{ float:right;width:300px}
   .center{
       // 创建bfc,不然行内元素围绕浮动元素
       overflow:hidden;
   }
}
// 2.定位(左中右)
 .wrapper{
   position:relative;
   &>div { position:absolute }
   .left { left:0;width:300px }
   .right { right:0;width:300px }
   .center { left:300px;right:300px; }
}
// 3. flex布局
.wrapper{
  display:flex;
  .left{width:300px}
  .right{width:300px}
  .center{flex:1}
}
// 4.表格布局
.wrapper{
  display:table;
  &>div{display:table-cell}
  .left{width:300px}
  .right{width:300px}
}
// 5. 网格布局
.wrapper{
  display:grid;
  width:100%;
  grid-template-rows:100px;
  grid-template-columns: 300px auto 300px;
}
</style>

2.2 css盒模型

题目1:基本概念:标准盒模型+IE盒模型

题目2:两种盒模型区别

题目3:css如何设置两种盒模型

题目4:js如何设置获取盒模型对应的宽高

1) dom.style.width/height【只能取到内联样式】
// element.style.xxx 这种只能取得内嵌样式的属性,获取样式能读能写

2) dom.currentStyle.width/height【只有IE支持】
// element.currentStyle[xxx] 可以取得内部和外部样式,但是只兼容ie浏览器,获取的样式只能读

3) document.getComputedStyle(dom,null).width/height
// **如果有设置宽高,则不论哪种盒模型获取到的都是设置的宽高**,和currentStyle相同,但是兼容性更好,IE9 以上支持;如果没有设置宽高,标准盒模型获取的是content的宽高

4) dom.getBoundingClientRect().width/height 
// 得到渲染后的宽和高,大多浏览器支持。IE9以上支持

5) dom.offsetWidth/offsetHeight【常用】
// 从上面可以看出,dom.getBoundingClientRect().width/height 和 dom.offsetWidth/offsetHeight 结果是一样的

题目5:根据盒模型解释边距重叠

外边距重叠是指两个【**垂直**】 【**相邻**】的块级元素,当上下两个边距相遇时,其外边距会产生重叠现象,且重叠后的外边距,等于其中较大者。(水平方向不会发生)
// 现象
-   1、margin都是正值时取较大的margin值
-   2、margin都是负值时取绝对值较大的,然后负向位移。
-   3、margin有正有负,从负值中选绝对值最大的,从正值中选取绝对值最大的,然后相加
// 解释
-   都是普通流中的元素且属于同一个 BFC
-   没有被 padding、border、clear 或非空内容隔开
-   两个或两个以上垂直方向的「相邻元素」
// 解决方式
-   1、为**父元素**定义1px的border-top或padding-top。
-   2、为**父元素**添加overflow:hidden。
-   3、子元素或父元素设置display:inline-block。
-   4、父元素加前置内容(::before)生成。(推荐)

题目6:BFC

BFC全称为块格式化上下文 (Block Formatting Context) ,是 Web 页面中盒模型布局的 CSS 渲染模式,指一个独立的渲染区域或者说是一个隔离的独立容器
// 特点
-  1.计算BFC高度时,浮动元素也会参与计算(清除浮动)
-  2.BFC的区域不会与浮动元素的box重叠。(防止浮动文字环绕)
-  3.BFC在页面上是一个独立的容器,内外元素不相互影响。(解决外边距重叠问题)
-  4.Box垂直方向的距离由margin决定。属于**同一个**BFC的两个相邻Box的margin会发生重叠
// 生成
-  1. **浮动元素**:float:left | float:right;【会导致父元素的宽度丢失,也会导致下边的元素上移】
-  2. **定位元素**:position:absolute | position:fixed;
-  3. **display的一些值**:display:inline-block【转为行内块会导致宽度丢失】 | display:flex | display:table | table-cell、table-caption、inline-table、inline-flex、grid、inline-grid;
-  4. **overflow值不为visible**:overflow:hidden;【将会剪切掉溢出的元素】 | overflow:auto、overflow:scroll;
-  5. **display:flow-root**【新属性,BFC创建新方式,没有任何副作用,注意浏览器兼容】
// display:table也可以生成BFC的原因在于Table会默认生成一个匿名的table-cell,是这个匿名的table-cell生成了BFC

参考:

1.css盒模型

2.BFC

2.3. DOM事件

题目1:基本概念:dom事件的级别

1DOM0: element.onclick=  
2DOM2:element.addEventListener('click',fn,false) //冒泡
3DOM3: element.addEventListener('') //增加了事件类型

题目2:dom事件模型(冒泡和捕获)

题目3:dom事件流

1、捕获阶段:事件流从window对象往下传递直到目标元素
2、目标阶段
3、冒泡阶段:事件流从目标元素往上传递,依次触发各元素绑定了该事件的监听

题目4:Event对象的常见应用

event.preventDefault()
event.stopPropagation()
event.stopImmediatePropagation() 
  # 事件响应优先级
  一个按钮绑定了两个click事件,一般会依次触发,这个方法可以阻止
event.currentTarget //绑定监听的dom元素
event.target // 点击触发事件的dom元素

题目5:自定义事件自定义事件

var event=new Event('custome') //事件对象event ,'custome'事件类型
dom.addEventListener('custome',fn)
dom.dispatchEvent(event)   // 注意是dispatchEvent

// CustomEvent对象
// event = new CustomEvent(typeArg, customEventInit);
var ev=new CustomEvent('xx',{detail:{x:1}}) 
// eventInit是配置参数{bubbles,cancelable,detail}
//可以传值 放在detail里
dom.addEventListener('xx',e=>{
   console.log(e.detail.xx)
})

2.4 http协议类

参考:

1.http发展历程

2 http面试题汇总

3 http面试题

题目0:http发展历程

// http/0.9
# 用来传输网络间的超文本内容,所以叫超文本传输协议
# 只有请求行,没有请求头和请求体,没有响应头信息
# ASCII字符流传输的

// http1.0 
# 出现了各种类型的资源,js ,css,图片
# 增加了请求头和响应头来支持多种类型数据
# 状态码,http缓存,user-agent

// http1.1
# 持久化连接,keep-alive, 浏览器默认允许最多建立6个tcp持久连接
# 管线化,整批发请求,服务器按请求顺序响应
# 虚拟主机的支持
# 对动态生成内容提供了支持,chunk transfer机制,最后用一个size为0的块作为数据发送完成标志
# 为什么浏览器对同一个域名建立的tcp连接有个数限制
  - 操作系统端口资源考虑
  - 过多并发频繁切换产生性能问题
  - 客户端良知机制(防止两个客户端抢占资源优势一方无限制获取资源)
  - 考虑服务端阀值
# 浏览器两个标签页是否公用tcp持久连接
    - 同一站点的js有执行上下文的 两个标签页可以,公用一个渲染进程
    
// http2
# http1.1问题
    - tcp启动慢
    - http1.1队头阻塞问题(持久化连接中,公用一个tcp管道,但一个管道同一时刻只能处理一个请求,阻塞)
# http2多路复用
    - 将请求数据,经过二进制分帧层处理后,会转换为一个个带有请求id编号的帧,一个资源的帧的编号是一样的,服务端收到后合并相同编号拿去完整信息,处理返回响应,经过二进制分帧层,分帧,交给浏览器处理
# 可以设置请求的优先级
# 服务器主动推送(请求页面html,附带将要使用js和css一起推给客户端 )
# 头部压缩

// http3
# 解决tcp建立连接的延时
# QUIC协议(快速的udp网络连接),代替tcp,ssl/tls的传输协议,
    - 实现了快速握手
    - 解决对头阻塞/多路复用,udp数据包没有处理顺序
    - 实现了类似tcp的传输可靠性功能
       udp传输不可靠,quic在udp基础上增加了一层保证数据可靠性的传输协议

题目1:http协议的主要特点

1.简单快速:每个资源都有个唯一uri,处理起来方便
2.灵活:通过一个http协议完成不同数据类型的传输(设置不同mime)
3.无连接: 每次请求连接一次,处理完就断掉
4.无状态:服务端不记录请求者的状态(通过session解决)

题目2:http报文的组成部分

请求报文:请求行(方法,http协议及版本)  请求头  空行  请求体
响应报文:状态行  响应头  空行  响应体

题目3:http方法

GET 获取资源
POST 传输资源
PUT  更新资源
DELETE 删除资源
HEAD  获得报文首部
OPTIONS 预检请求

题目4:POST和GET的区别

1GET在浏览器回退时是无害的,而Post会再次提交请求
 2GET产生的URL地址可以被收藏,而POST不可以
 3GET请求会被浏览器主动缓存,而Post不会,除非手动设置
 4、get请求只能url编码,而post支持多种编码方式
 5、get请求参数会完整的保留在历史记录里,而post的参数不会被保留
 6、get请求在url中传动的参数是有长度限制的(2kb),而post没有限制
 》7、对参数的数据类型,get只接受ASCII码,post没有限制
 》8、get比post更不安全,因为参数暴露在url上
 》9、get参数通过url传递,而post放在request body中

题目5:http状态码

1xx:指示信息-表示请求已接收,继续处理
2xx: 成功-表示请求已被成功接收
3xx: 重定向-要完成请求必须进行更进一步的操作
4xx: 客户端错误 - 请求有语法错误或请求无法实现
5xx:服务端错误 - 服务器未能实现合法的请求
**********************************************
200 ok 客户端请求成功
》》206 客户端发送了一个带有range的get请求,服务器完成了它
》》301 所有请求的页面已转移到新的url(永久重定向)
》》302 所请求的页面已(临时)转移到新的url(临时重定向)
》》304 not modified(文件未被修改) 客户端有缓冲的文档发出了一个条件性的请求,服务器告诉客户端原来缓存的文档还可以继续使用
400 客户端语法错误,不能被服务器理解
401 请求未经授权
403 对被请求页面的访问被禁止 (只能服务器访问)
404 请求资源不存在
500 服务器错误
503 请求未完成,服务器临时过载或当机,过段时间可能恢复

题目6:什么是持久连接

http协议采用“请求-应答”模式,使用普通模式时,每个请求/应答,客户端和服务端
都要新建一个连接。完成后立即断开连接(http协议为无连接的协议)
》》http1.1才支持
当使用keep-alive模式(又称持久连接,连接重用)时,keep-alive功能使得
客户端到服务器的连接(持续有效),当出现对服务器的后继请求时,
keep-alive功能避免了建立或者重新建立连接

题目7:什么是管线化

使用持久连接时:
请求1 --> 响应1 --> 请求2 --> 响应2

管线化:某个连接上的消息变成了类似这样
(请求一次打包,响应一次打包)
请求1 --> 请求2  --> 响应1 --> 响应2
*********************
#管线化机制通过持久化连接完成,仅http1.1支持此技术
#只有GETHEAD请求可以进行管线化,而POST则有所限制
#初次连接时不应该启动管线化,因为对方浏览器可能不支持

题目8: 什么是options请求

题目9:cookie和session

参考: options请求

1.跨域预检请求
// 即 CORS 预检请求,服务器若接受该跨域请求,浏览器才继续发起正式请求
// 避免对服务端数据的副作用
2.简单请求
// 请求方式为`GET、HEAD、POST`时的请求
// 认为设置规范集合之内的首部字段,如`Accept/Accept-Language/Content-Language/Content-Type/DPR/Downlink/Save-Data/Viewport-Width/Width`
// Content-Type 的值仅限于下列三者之一,即`application/x-www-form-urlencoded、multipart/form-data、text/plain`
// 请求中没有使用 `ReadableStream`对象
// 请求中的任意 `XMLHttpRequestUpload`对象均没有注册任何事件监听器
3.复杂请求(非简单请求)
4.关键字段,请求Header字段,请求方法;相应允许方法,允许跨域,允许请求头字段
5.优化
// 转化jsonp变为简单请求
    // 服务器端设置 Access-Control-Max-Age 字段,缓存options请求

题目9:谈谈三次握手&四次挥手

参考 http三次握手四次挥手

// 三次握手
# 过程
    - 第一次握手:客户端发给服务端一个SYN报文,并指明客户端初始化序列号ISN(C).此时客户端处于SYN_SEND状态
    - 第二次握手,服务端接收到客户端SYN报文后,会响应自身SYN报文+ ACK(客户端SYN+1,表明已收到客户端信息)做响应,并指明自身序列号ISN(s),服务器处于SYN_SEND
    - 第三次握手,客户端收到服务端SYN报文后,会发送ACK(服务端的ISN+1)报文,表示自己已经收到信息,此时客户端established
    - 服务端收到ACK报文后,也处于established状态,连接建立
# 作用
    - 确认双方的发送接收能力是否正常
    - 防止已失效的连接请求报文又传到服务器,这样连接就会一直持续,白白消耗网络资源
    
// 四次挥手
# 刚开始双方都处于established状态,假如客户端先发起关闭请求
  - 第一次挥手:客户端发送一个FIN报文,报文中指定一个序列号,此时客户端处于FIN_WAIT_1状态
  - 第二次挥手:服务端收到FIN之后,发送ACK报文(客户端FIN+1),表示收到客户端报文了,服务端处于CLOSE_WAIT
  - 客户端接收到响应ACK报文后,处于FIN_WAIT_2
  - 第三次挥手:如果服务端也想断开连接,和客户端挥手一样,发送FIN报文,指定一个序列号,服务端处于LAST_ACK状态
  - 第四次挥手:客户端收到服务端的FIN报文后,一样发送一个ACK(服务端FIN+1)报文做应答,此时客户端处于TIME_WAIT状态,(需要过阵子收到自己的ACK报文后才会进入CLOSED状态)
  - 服务端收到ACK报文,关闭连接,处于CLOSED状态
  
  高平考点:客户端TIME_WAIT,为什么客户端发送ACK之后,不直接关闭。原因确保服务端收到了ACK报文,如果丢包的话,服务器会重新发送FIN报文给客户端,客户端再次收到ACK报文后,就知道之前的ACK报文丢失了,然后再次发送ACK报文;
  time_wait持续的时间至少是一个报文来回时间,如果过了这个时间,没有收到FIN报文表示对方收到了ACK报文,那就可以关闭连接。进入CLOSED状态

2.5 面向对象类

题目1:创建对象有几种方法

new Object()
var a = {}
var b = Object.create(prototype)

题目2:原型,构造函数,实例,原型链

// 原型:
Fn.prototype=new Fn().__proto 
Fn.prototype.constructor=Fn 
// 原型链
obj.__proto__.__proto__ 直到 Object.prototype
Object.prototype.__proto__ === null

题目3:instanceof原理

function new_instance_of(leftVaule, rightVaule) { 
    let rightProto = rightVaule.prototype; // 取右表达式的 prototype 值
    leftVaule = leftVaule.__proto__; // 取左表达式的__proto__值
    while (true) {
    	if (leftVaule === null) {
            return false;	
        }
        if (leftVaule === rightProto) {
            return true;	
        } 
        leftVaule = leftVaule.__proto__ 
    }
}

题目4:new 运算符

new Fn()
1.创建新对象 var obj = {}
2.新对象执行原型连接 Object.setPrototypeOf(obj, Fn.prototype)
3.绑定this,this = obj
4.执行函数体
5.如果没有其他返回对象,那么返回这个新对象

题目5:类与继承

// JS继承实现,组合寄生
function P(){}
function C(){
    P.call(this)
}
C.prototype=Object.create(P.prototype)
C.prototype.constructor = C

// 类继承
class A extends B{}
// 1.静态类本身对象继承
A.__proto__ = Object.create(B.__proto__) 
// 2.类
A.prototype = Object.create(B.prototype)

// 寄生extends实现 (底层Object.create实现)
function extends(A,B){
    function F(){}
    F.prototype = B.prototype
    A.prototype = new F()
    A.prototype.constructor = A
}

2.6 通信类

题目1:什么是同源策略

# 同源策略限制从一个源加载的文档或脚本如何与来自另一源
的资源进行交互(用于隔离潜在的恶意文件的安全机制)
》》主要限制:
# Cookie localStorage IndexDB无法获取
# DOM无法获取
# AJAX请求不能发送(不能响应,options预请求)

题目2:前后端如何通信

# AJAX (同源通信)
# WebSocket (不受同源策略限制)
# CORS fetch API (支持跨域通信,也支持同源通信)
# jsonp

题目3:如何创建ajax

// 考虑兼容性
var xhr=XMLHttpRequest?new XMLHttpRequest():new window.ActiveXObject()
xhr.open('GET',url?params,async)
// post
xhr.open('POST',url, async)
xhr.setRequestHeader('Content-type','application/x-www-form-urlencode')
//
xhr.send(null) //get
xhr.send('a=12&b=3') //post
xhr.onstatuschange=function(){
  if(xhr.readystate==4){
      if(xhr.status==200(普通响应或强缓存)||xhr.status=206(range响应)||xhr.status==304//文件未更改协商缓存,重定向)){ 
               // sucecess
      }
   }
}

题目4:跨域通信的几种方式

// JSONP

// Hash  hash改变,页面不会刷新(search改变,页面会刷新
场景iframe嵌套页面B, window.onhashchange

// postMessage  iframe嵌套通信
Bwindow.postMessage('data','B.com')
window.addEventListener('message',function(e){
    e.origin //A.com 
    e.source //Awindow 
    e.data //data
},false)

// WebSocket
var ws=new WebSocket('wss://echo.websocket.org')
// wss协议加密 ,ws协议不加密
ws.onopen=function(evt){
  ws.send('str')
}
ws.onmessage=function(evt){
  evt.data 
  ws.close()
}
ws.onclose=function(evt){}

题目5:CORS

// 概念
CORS是w3c标准,全称跨域资源共享(cross-origin resource sharing),
它允许浏览器想跨域源服务器,发送ajax请求
浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,增加一个Origin字段
服务器根据这个值,决定是否同意这次请求,并设置允许跨域的响应头,浏览器根据这些响应头,决定要不要拦截响应
// fetch mode (用来实现cors通信的)
same-origin 
  // 只允许同源策略下的请求发送,不支持发送跨域请求
cors 
  // 允许发送跨域请求,需要后端支持跨域,才能获取响应
no-cores 
  // 该模式用于跨域请求但是服务器不带CORS响应头,也就是服务端不支持CORS;
  // 这也是fetch的特殊跨域请求方式;其对应的response type为opaque;
  // 该模式允许浏览器发送本次跨域请求,但是不能访问响应返回的内容,这也是其response type为opaque透明的原因
  
// HTML5提供的XMLHttpRequest Level 2 支持发送跨域请求,level 1不支持

// 后端设置的响应头允许跨域
Access-Control-Allow-Credentials : true  // cookie
Access-Control-Allow-Headers : *
Access-Control-Allow-Methods : PUT,POST,GET,DELETE,OPTIONS
Access-Control-Allow-Origin : http://localhost:8000  //域名

2.7 安全类

题目1: CSRF

// 跨站请求伪造
// 原理 (自动携带以访问过的网站的cookie去访问该网站下的所有接口链接)
用户登录了网站A,下发cookie
用户访问网站B,网站B有个引诱链接,改链接是网站A的某个接口(比如支付)
当用户点击了链接,救会把网站A的cookie自动带过去,调用接口成功
// 防御措施
1.Token验证,请求头的token在该网站下的web request封装里才会加上该header,其他网站发来的链接访问,不会带上
2.cookie二次验证(放url里)
3.refer验证来源网站域名
4.手机验证码验证
5.隐藏令牌(类似token,放请求头中)

题目2: XSS

参考 xss攻击

// 跨站脚本攻击
// 原理
向页面注入脚本(比如评论区编写脚本,显示时在前端就会执行改脚本)
// 类型
1.反射性xss
  // 恶意 JavaScript 脚本属于用户发送给网站请求中的一部分,
  // 随后网站又把恶意 JavaScript 脚本返回给用户
  // 现实生活中常常通过QQ、邮件发送包含恶意的链接 url?xx=script
2.存储型xss
3.dom型xss
  // 不涉及页面web服务器
  // 在 Web 资源传输过程或者在用户使用页面的过程中修改 Web 页面的数据
// 防御措施
1.输出转义,xss包,转义标签为实体字符
2.输入过滤
3.cookie设置HTTPOnly仅服务端读取
4.充分利用 CSP, 限制加载其他域下的资源文件

2.8 算法类

题目1:冒泡排序(时间空间复杂度)

// 冒泡排序
// 快速排序
// 选择排序
// 希尔排序

题目2:堆栈,队列,链表

题目3:递归

题目4:波兰式和逆波兰式

3. 模拟二面

3.1 面试技巧

1、知识面广
2、理解要深刻
3、内心要诚实(不要说自己忘了什么的)
4、态度要谦虚
5、回答要灵活
6、要学会赞美 (自己没有面试官理解的深)

3.2 渲染机制类

题目1:什么是DOCTYPE及作用

// DOCTYPE是用来声明文档类型和DTD规范的
// DTD
DTDdocument type define文档定义类型)是一系列的语法规则
浏览器会使用它来判断文档类型,决定用何种协议来解析
// HTML5:<!DOCTYPE html>
// HTML4: 严格模式和怪异模式

题目2:浏览器渲染过程

题目3:重排reflow和重绘repaint

3.3 js运行机制

题目1:js单线程机制

题目2:任务队列

题目3:event loop

3.4 页面性能

题目1:提升页面的性能的方法有哪些

// 资源体积
1. 资源压缩合并
2. 非核心代码异步加载->异步加载的方式->异步加载的区别
(普通的script脚本是同步加载的)
  // 1、动态脚本加载(创建动态节点)
  // 2. script defer
     文档解析时,遇到设置了`defer`的脚本,就会在后台进行下载,
     但是并不会阻止文档的渲染,当页面解析&渲染完毕后。  
     会等到所有的`defer`脚本加载完毕并按照顺序执行,
     执行完毕`DOMContentLoaded`事件
  // 3. script async
     异步加载,不保证执行顺序
     `async`脚本会在加载完毕后执行。  
     `async`脚本的加载不计入`DOMContentLoaded`事件统计,
// 网络请求
1. 浏览器缓存
2. 预解析dns
<meta http-equiv="x-dns-prefetch-control" content="on"> 
  //http协议的a标签的预解析默认是开启的,但https的默认是关闭的
<link rel="dns-prefetch" href="//host_name_to_prefetch.com">

参考:

script defer async

3.5 错误监控

常见问法:

  1. 如何监测js错误
  2. 如何保证你的产品质量
// 1.前端错误的分类
1.即时运行错误:代码错误
2.资源加载错误

// 2.错误的捕获方式
1.即时运行错误捕获
  # try catch
  # window.onerror
2.资源加载错误
  # object.onerror (如img.onerror(不会冒泡))
  # performance.getEntries()  //返回成功加载资源的数组
  # window.addEventListener('error',fn,true) //捕获阶段
  
// 3.跨域的js运行错误可以捕获吗,错误提示是什么,如何处理
可以捕获,
提示信息都是script error,
处理:在script标签增加crossorigin属性,在js资源响应头设置支持cors的响应头

// 4.上报错误的基本原理
1.ajax上报
2.new Image().src上报

3.6 MVVM框架类

3.7 内存泄露

# 场景:
1. 没有清理的元素dom引用
2. 全局变量
3. 闭包
4. 定时器或回调

# 调试chorme devtools
   memory 下profiles录制快照,对比前后快照增加的内存使用情况,和新增的内存变量

4. 模拟三面

4.1 面试技巧

1.项目架构和业务能力
// 面试官反感那些逻辑啰嗦没说出重点的,项目经验和难度
2. 准备要充分
3. 描述要演练 // 项目难点,技术亮点,方案
4. 引导找时机
5. 优势要发挥
6. 回答要灵活 

4.2 业务能力

1、我们做过什么业务 (简介回答)
2、负责的业务有什么业绩 (量化)
3、使用了什么技术方案 
4、突破了什么技术难点
5、遇到了什么问题
6、最大的收获是什么(技术和业务)

4.3 团队协作能力

1、分享一些知识和技术
2、帮助同事解决一些问题
3、和项目组长讨论一些技术方案

4.4 事物推动能力(跨部门跨组合作)

1. 对历史代码的一些算法逻辑进行更新迭代

4.5 带人能力

1、带实习生完成了什么,代码规范,codeReview

5. 终面(HR)

5.1 跳槽经历

》》特别忌讳说上一家公司的不好
》》换工作是因为自己有一份明确的职业规划,我在几年之内达到什么
   样的目标(技术上或管理上),之前的工作与自己的职业规划不符合
   (敢于承担,不出错)

5.2 薪资相关

1、之前的待遇问题(尽量打探面试工作的薪酬范围)
2、你对当前待遇的期望
 咱们公司是非常知名的公司,做事都有自己的规范。在薪资这块,
 通过我前几轮的面试以及对我各方面的一个考察,我相信咱们公司
 会给我一个合理的待遇和安排。我更注重的是咱们公司的机会
3、如果达不到期望,你会如何选择
# 我相信公司不会让我失望
# 如果达不到期望,说明我的技术还达不到咱们公司的要求,
  我会更加努力,达到这个目标和水平