人生第一次面试

3号下午六点突然接到了一个电话,显示微应用的号码,电话里,腾讯的面试官告诉我晚上7点进行电话面试

心情瞬间开始变得兴奋和紧张

紧张的是没有什么准备很突然,兴奋是因为这是第一次专业的面试

虽然总体表现不是很好,但是通过这次面试也给自己找到了很多不足的地方,面试之后总结了题目,发出来共勉一下


自我介绍

我说了自己的学习历程,说了些参与过的小项目,获过的奖项,然后就进入了正式的面试环节


JS

  1. JavaScript的数据类型有哪些?
    基本数据类型:String 、 Number 、 Boolean 、 null 、 undefined
    引用数据类型:Function 、 Object 、 Array
  2. undefined与null的区别(想起来一大部分有一些是面试后补充的)
    undefined表示”缺失值”,null表示没有对象,
    undefined与null值相同但是类型不相同
    声明变量后不赋值就会默认为undefined,函数无返回值时也会默认undefined,调用函数时没有提供相对应的参数,参数也会默认undefined
    null可以用作函数的参数,表示该函数的参数不是对象,也可以作为原型链的终点
  3. 在日常应用中,undefined和null的常用方式
    undefined用于清空变量,null用于清空对象
  4. JSON的格式是什么
    "{"key": "value", "key": 1 }"
  5. JS中JSON相关的内置对象
    Json.stringify() 将js对象或数组转换为字符串
    JSON.parse() 将文本解析为js对象

自我感觉上面答的还可以,主要也是由于那几天在重新温习js和学习es6,脑子里面全是js相关的东西,然而从这后面的就开始了I Don’t Know的旅程

H5

  1. H5有哪些新特性(这个还是知道的)
    audio、video、canvas、article、footer、section、nav、header、表单控件email、date、time、url、search、地理定位、缓存application cach
  2. 简单说一下H5的语义化(说实话一瞬间就懵了,因为不常用所以已经忘了语义化是什么)
    将标签优化使页面结构更加清晰,增加可读性,有利于SEO优化;根据文档上下文选择合适的语义化标签等;尽量减少使用无语义化的标签如;添加title和kewords;不使用带有样式的标签,用css设置样式,应用<header><body><section><footer>等易于机器进行识别的标签(后续搜索的答案)

浏览器相关

  1. 从用户输入url到页面显示都发生了什么
    (1)客户端通过DNS解析获得服务器的ip
    (2)三次握手建立tcp链接
    (3)浏览器向服务器发送HTTP请求
    (4)服务器回应HTTP响应
    (5)浏览器接收HTTP响应的数据
    (6)浏览器解析html文件,根据标签生成DOM树
    (7)浏览器解析css,生成CSSOM树
    (8)浏览器将DOM树和CSSOM树合并,构建渲染树
    (9)浏览器进行布局、绘制、重绘和回流
    (10)浏览器与服务器四次挥手断开链接
  2. 具体描述一下浏览器的重绘与回流
    重绘:根据元素的新属性重新绘制,使元素呈现新的外观
    回流:当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建称为回流
    区别:回流一定会引起重绘,而重绘不一定引起回流
  3. 浏览器的缓存类型
    协商缓存:每次读取缓存时,先到服务器去验证是否有改变,如果有就获取,没有就从缓存中读取,响应code为304
    强制缓存:只要缓存没过有效期,就强制读取缓存,响应code为200,该类缓存必定要持久化到disk
  4. 浏览器的常用缓存机制
    http缓存:基于http协议的浏览器文件缓存机制,当重复请求某一个文件时,浏览器可以根据协议的头文件判断是从服务端请求文件还是从本地读取文件
    cookies:用于标识用户的一小块数据信息,可在浏览器与服务器之间传递
    localStorage:要访问同一个localStorage页面必须同源,没有时间限制的数据存储,主要可用于存储ajax请求返回的数据
    sessionStorage:只能被最初存储对象的页面所访问,针对一个session的数据存储,浏览器关闭后就会删除
    还有indexDB等

数据结构

!!!不问我真的没意识到这些知识已经忘光了,欲哭无泪啊!!!

  1. 二叉树的遍历方式有哪些?
    前序遍历,中序遍历,后序遍历和层序遍历
  2. 二叉树如何删除一个节点?
    先确定树的类型,然后找到节点的位置,如果节点是最底层的子节点,就直接置空;如果有一个左子节点或右子节点,则将子节点拼接在要删除的节点的父节点上;如果有左子节点和右子节点,则依序寻找未删除的下一个遍历位置,在不改变原有顺序的情况向将节点进行置换,改变树的结构

操作系统

  1. 简单说一下线程与进程
    进程是并发执行的程序在执行过程中分配和管理资源的基本单位,是竞争计算机系统资源的基本单位
    线程是进程的一个执行单元,是进程内可调度的一个实体
    一个程序至少有一个进程,一个进程至少有一个线程
    区别:
    地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。
    资源拥有:同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资源是独立的。
    开销:线程执行开销小,但是不利于资源的管理和保护。线程适合在SMP机器(双CPU系统)上运行;进程执行开销大,但是能够很好的进行资源管理和保护。进程可以跨机器前移。

计算机网络

  1. HTTP的状态码及其描述
    2**:处理成功
    3**:重定向
    4**:客户端错误
    5**:服务器错误
状态码 作用
200 请求成功,服务器成功处理了请求
201 请求成功,并且服务器新创建了资源
202 请求成功但服务器尚未处理
301 永久重定向,页面永久跳转到新的url
302 临时重定向,服务器目前从不同位置的网页响应请求,但请求仍继续使用原有位置来进行以后的请求
403 服务器已接收请求,但拒绝处理
404 页面url未找到
500 服务器错误
502 网关错误
503 由于超载或正在维护,服务器暂时不可用

以上就是这次面试的全部题目了,总结一下这次面试:

全程很紧张,没有什么准备太突然了,暴露了很多缺点,大多数内容只是会用,却没记住,对基础内容掌握还不透彻,对算法,操作系统等大多数之前掌握的知识现在都忘了,也体现了记笔记和记博客的重要性,虽然这次面试很有挫败感,但是也给了我接下来学习的方向和动力,相信努力总是会有回报的!