从零开始准备的前端春招实习(已拿头条阿里腾讯提早批offer)

背景

和不少人同样,我也是半路转的前端。本身一开始是作服务端开发的,也在美团平常实习过一段时间。 在实习期间,主要就是设计数据库表、Java/SpringBoot的CURD、提供RESTFul接口以及部署服务器的一些工做。由于平常工做会与前端工程师们打交道,在那个时候发觉前端很酷,本身对服务端的开发确实不是很感兴趣,以及到后面对JS的喜好,让我坚定的走上了前端的道路。前端

计算机基础

万丈高楼平地起,做为校招生,计算机基础绝对是面试中的重中之重。
但愿你们能够夯实基础,不要抱有侥幸的心理。react

数据结构与算法

代码来自于LeetCodewebpack

基本的数据结构

  • 数组
  • 链表

这两个数据比较的简单,数组能够结合JS的 Array 来学习。 而链表的结构以下web

function ListNode(val) {
    this.val = val;
    this.next = null;
}
复制代码

树的话要掌握如下几种结构面试

  • 二叉树
  • 哈夫曼树
  • 二叉搜索树
  • AVL树
  • 2-3树
  • 红黑树

树的结构以下算法

function TreeNode(val) {
    this.val = val;
    this.left = this.right = null;
}
复制代码

树涉及的算法数据库

  • 前序遍历、中序遍历、后序遍历、层次遍历
  • 每种树查找某个结点的时间复杂度
  • 每种树增长或删除结点的须要的步骤

图的表示法npm

  • 邻接表
  • 邻接矩阵

图涉及的算法redux

  • 最小生成树
  • 最短路径
  • 并查集

查找算法

  • 遍历
  • 二分查找

排序算法

  • 插入排序(近乎有序的状况下效率很高)
  • 选择排序
  • 冒泡排序
  • 归并排序
  • 快速排序

面试前端不会有什么过高深的算法,掌握基础就行了跨域

书籍推荐:

算法(第4版) [Algorithms Fourth Edition] 人民邮电出版社

计算机网络

计算机网络的知识点比较多,可是针对面试的话,考察的点主要有以下几个

  • OSI7层模型
  • 应用层协议,HTTP与HTTPS,DNS
  • 传输层协议,TCP与UDP
  • 网络层协议,IP

协议的话,主要考察这些方面

  • HTTP具体的内容、请求类型,HTTP与HTTPS的区别
  • DNS的具体流程
  • TCP与UDP的异同,两个协议的具体内容,TCP链接创建与断开的流程、TCP拥塞控制

计算机网络部分只要了解经常使用的知识,本身能对网络有个感性的认识便可。有条件的话,能够看一下推荐的这本书,是本身当时的教材,讲得很是生动,翻译得也很好。

书籍推荐:

计算机网络:自顶向下方法(原书第7版) 机械工业出版社

操做系统

天天都在操做系统上工做,若是不了解程序是怎么在系统上跑起来的,也说不过去吧?理解了操做系统的知识,虽说没有什么直接的用处,可是咱们在写程序的时候,会通透不少。

进程与线程

进程是对运行时程序的封装

  • 进程和线程以及它们的区别
  • 进程间的通讯的几种方式
  • 线程同步的方式
  • 什么是死锁?死锁产生的条件
  • 死锁的处理
  • 进程有哪几种状态
  • 操做系统中进程调度策略有哪几种

内存管理

程序是要装进内存,才能运行起来的

  • 分页和分段有什么区别
  • 什么是虚拟内存
  • 页面置换算法

操做系统还有很多的知识,可是就面试来讲,考察的东西就以上的几个知识点,有兴趣能够看书慢慢补全

推荐书籍:

计算机操做系统(汤小丹) 西安电子科技大学出版社

计算机基础这一块主要的部分其实差很少了,还有像《编译原理》《计算机组成原理》这两门课,考察的点比较少,例如 词法分析有限状态机以及原码/补码/反码浮点数表示法进制转换等等,遇到了再进行针对性的复习便可。

前端基础

HTML

说实话,这部分考察的东西不是不少,主要如下几点

  • HTML的解析过程
  • HTML5提供的新API,语义化,WebStorage等等

CSS

CSS基础

  • 块状元素与行内元素
  • 盒子模型
  • 浮动与定位
  • 浏览器是怎样解析CSS选择器

复杂一点的

  • BFC
  • Flex布局
  • Grid布局
  • n行自适应
  • 垂直居中的多种方式
  • 重排和重绘

CSS3新功能

  • background
  • 动画

我的的见解是,对于CSS的学习,不要太钻牛角尖,由于CSS是一门有魅力可是又很复杂的语言。可以把上面的几个知识点理解透彻,融会贯通,相信面试官也不会在CSS方面刁难你了。

JavaScript

说实话,相对于HTML和CSS,JS才是前端面试的重点

JS基础

  • 基本的语法与特性
  • 基本类型
  • 引用类型
  • 变量
  • 方法
  • 当即执行函数表达式
  • 做用域
  • 闭包
  • 原型
  • Ajax与跨域
  • DOM
  • BOM

以上几点,都是JavaScript的重中之重。别再看网上JS的入门教程了,强烈给你们推荐这本书,很是适合入门者

JavaScript高级程序设计(第3版)

JS进阶

JS的进阶主要关注的部分是:做用域、闭包、原型以及一些常见方法的实现

  • 词法做用域的含义
  • 执行上下文
  • 做用域链
  • this 的指向
  • 变量对象
  • 原型链深刻
  • callapplybind的实现

推荐书籍:

你不知道的JavaScript

ES6

如今ES6已经很是普及了,做为不过期的前端,仍是须要了解

ES6基础

  • let / const
  • 模块化语法
  • 对象扩展
  • Class 与 继承
  • 函数扩展
  • 箭头函数
  • Set和Map

ES6新对象

  • Promise
  • Iterator
  • Generator
  • Decorator
  • Proxy

以及一些新标准的语法

  • async/await

ES6的基本语法,面试会考察一些经常使用的,若是不了解也不用太纠结,毕竟只是API。

推荐书籍:

ES6标准入门(阮一峰)

前端工具

框架

这里我把经常使用的前端框架 ReactVue 也算在工具里面了,由于本人毕竟熟悉 React,因此下面会针对 React 来展开,其它框架的考察的知识点也相似

React

  • React的基本用法与常见API
  • JSX语法
  • 组件、数据流、生命周期
  • React获取真实DOM
  • React事件系统
  • 受控/非受控组件
  • 样式处理
  • 高阶组件
  • 性能优化方法
  • setStatediff算法源码

Redux

  • 具体流程
  • 实现原理
  • react-redux的用法

Vue

其实 Vue 全家桶我只会一些经常使用的API以及双向绑定的实现原理,就不展开了。

面试官通常不会专门去问你框架的知识,除非你本身的项目里面使用过,要考察一下你了解到什么成都。若是不了解一点框架源码的知识,只提API,是没有什么亮点的,由于你们都会。

前端路由

前端路由基本的思想就是根据路径去匹配对应的组件,而后用组件里面的内容去替换页面里面须要路由的内容

  • Hash模式
  • History模式

打包工具

对打包工具不会有太多的考察,通常来讲使用过webpack(功能强大)就够了

  • 配置文件的写法
  • 经常使用loader
  • 经常使用plugins
  • webpack-dev-server

Node.js

前端工具,其实都是创建在Node.js的基础上的,因此这一块也要了解

  • CommandJS规范
  • npm 脚本
  • Node.js 经常使用的模块
  • 服务端框架(有了解过会比较好)

Babel

JS的转译工具,会用便可

  • 转译ES6
  • 转译JSX
  • 本身定义的一些转译规则等等

其它修炼方式

1. 看源码

不少前端同窗以为,前端不必刷题,由于工做足够简单。确实,引用 闰土小叔 的一句话

Vuecli一把梭真的爽的一笔,再引个elementui,只要搜索引擎玩的6,写代码根本不须要智力

可是,咱们有想过这些问题嘛

  • 如何从零开始搭建一个脚手架呢?
  • 如何实现一个相似React的视图层框架呢?
  • 如何提升diff算法的效率?

这些工具都是世界上最优秀的JS大师耗费多年心血写出来的,直接开源给你看都不想看嘛?
看不懂,直接看网上的博客呗。

2. LeetCode

直接说刷题的好处

  • 让你对JS更加熟悉,再也不是读读背背
  • 深刻理解数据结构与算法
  • 锻炼和保持编码能力
  • 面试要考
  • AC的快感

刷LeetCode,对编码能力提高真的有很大帮助。从零开始刷满50题,写起JS来绝对是不同的体验。入门的话,能够看一下推荐的这本书

剑指offer

《剑指offer》加上 LeetCode ,题量能够保持200道的话,已经很不错了。固然,面试出重复题目的概论不高,最主要是提供一点思路。

后续...

篇幅关系,后面会再更新一些基础知识以外的常见考点,若是有什么错误或者遗漏,欢迎指正。

相关文章
相关标签/搜索