# 学习及面试问题整理

# 代码能力得达到什么程度?

# 至少能独立完成项目

  1. 根据一份文档,或者自己的一个想法,然后从前端开始一直做(可以连后端都做了),遇到问题独立解决;
  2. 经常思考代码可读性、复用性、性能问题;
  3. 规范化代码(推荐使用eslint);
  4. 版本控制(git、svn);
  5. 独立部署上线、维护;

#经验积累

经验积累是个长期过程。写博客、写笔记很重要。

# 计算机基础知识(真的很重要)

  1. 计算机网络:http协议、tcp协议等...
  2. 操作系统:内存、CPU、GPU等...
  3. 数据结构:队列、栈、树、排序算法、搜索算法等...
  4. 数据库系统原理:sql语言、索引、ACID等...
  5. 算法分析与设计:算法术语、贪心、递归、分治、动态规划等...
  6. 面向对象/面向过程/函数式编程(函数式可能比较扯,可以忽略):Java(面向对象)、C(面向过程)、Haskell(函数式编程)
  7. blabla等等,除了个别专业方向还有各种的课程如:信息安全、计算机图形学、人工智能、通讯原理等...

# 前端基础知识

  1. javascript基础:闭包、原型链等blabla...
  2. html和css基础:语义化、新标签和废弃标签、css各种属性(用法)、css3动画硬件加速等blabla
  3. javascript设计模式:单例模式、观察者模式、工厂模式(阅读threejs源码的时候发现很多地方都用到了设计模式,优化了性能)ES6/ES7(最近好像出了ES8,快扶我起来,学不动了( ̄﹏ ̄)):阮一峰的ES6教程
  4. 构建工具:webpack/gulp/fis3 选一个或者webpack+gulp这样的搭配来学习
  5. Nodejs:前端必备后端语言,因为推崇大前端(啥都干)

# 前端框架(不得不说,真的成了标配了)

  1. React、Vue、Angular选择一个或者多个,把一整套啃下来,至少做个项目。比如react+react-router+redux/mobx
  2. 深入分析框架源码实现(原谅我,我只是看过一丢丢react的源码解读)

# 有后端开发经验(Java/C++/Python/PHP/Ruby/Go)

  1. 学了一门后端语言然后再学其他后端其实都相差不大的(对http、tcp的封装接口、路由、操作系统的接口、调用Hadoop接口、调用mysql接口等...)这里指的是后端基础,个人还未深入后端,不好说大话。

# 部分面试题整理

# HTML和CSS

  • 你做的页面在哪些浏览器测试过?这些浏览器的内核分别是什么?
  • 每个HTML文件里开头都有个很重要的东西,Doctype,知道这是干什么的吗?
  • Quirks模式是什么?它和Standards模式有什么区别
  • div+css的布局较table布局有什么优点?
  • img的alt与title有何异同? strong与em的异同?
  • 你能描述一下渐进增强和优雅降级之间的不同吗?
  • 为什么利用多个域名来存储网站资源会更有效?
  • 请谈一下你对网页标准和标准制定机构重要性的理解。
  • 请描述一下cookies,sessionStorage和localStorage的区别?
  • 简述一下src与href的区别。
  • 知道的网页制作会用到的图片格式有哪些?
  • 知道什么是微格式吗?谈谈理解。在前端构建中应该考虑微格式吗?
  • 在css/js代码上线之后开发人员经常会优化性能,从用户刷新网页开始,一次js请求一般情况下有
  • 一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的
  • 你如何理解HTML结构的语义化?
  • 谈谈以前端角度出发做好SEO需要考虑什么?
  • 有哪项方式可以对一个DOM设置它的CSS样式?
  • CSS都有哪些选择器?
  • CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内?
  • 超链接访问过后hover样式就不出现的问题是什么?如何解决?
  • 什么是Css Hack?ie6,7,8的hack分别是什么?
  • 请用Css写一个简单的幻灯片效果页面
  • 行内元素和块级元素的具体区别是什么?行内元素的padding和margin可设置吗?
  • 什么是外边距重叠?重叠的结果是什么?

# JS基础

  • javascript的typeof返回哪些数据类型
  • 例举3种强制类型转换和2种隐式类型转换?
  • split() join() 的区别
  • 数组方法pop() push() unshift() shift()
  • 事件绑定和普通事件有什么区别
  • IE和DOM事件流的区别
  • call和apply的区别
  • b继承a的方法
  • JavaScript this指针、闭包、作用域
  • 如何阻止事件冒泡和默认事件
  • ”==”和“===”的不同
  • JavaScript的数据类型都有什么?
  • 看下列代码输出为何?解释原因。
  • foo = foo||bar ,这行代码是什么意思?为什么要这样写?
  • 完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。
  • 完成函数showImg(),要求能够动态根据下拉列表的选项变化,更新图片的显示
  • 阻止冒泡函数
  • 输出多少?
  • 精度问题: JS 精度不能精确到 0.1 所以 。。。。同时存在于值和差值中
  • 输出结果
  • 以下代码中end字符串什么时候输出
  • 请用原生js实现jquery的get\post功能,以及跨域情况下
  • 请简要描述web前端性能需要考虑哪方面,你的优化思路是什么?

# HTML5 CSS3

  • CSS3有那些新特性
  • html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HT
  • 本地存储(Local Storage )和cookies(储存在用户本地终端上的数据)之间的区别
  • 如何实现浏览器内多个标签页之间的通信?
  • 你如何对网站的文件和资源进行优化?
  • 什么是响应式设计?
  • 新的 HTML5 文档类型和字符集是?
  • HTML5 Canvas 元素有什么用?
  • HTML5 存储类型有什么区别?
  • 用H5+CSS3解决下导航栏最后一项掉下来的问题
  • CSS3新增伪类有那些?
  • 请用CSS实现:一个矩形内容,有投影,有圆角,hover状态慢慢变透明。
  • 描述下CSS3里实现元素动画的方法
  • html5\CSS3有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?
  • 你怎么来实现页面设计图,你认为前端应该如何高质量完成工作? 一个满屏 品 字布局 如何设计?

# Ajax

  • Ajax 是什么? 如何创建一个Ajax?
  • 同步和异步的区别?
  • 如何解决跨域问题?
  • 页面编码和被请求的资源编码如果不一致如何处理?
  • 简述ajax 的过程。
  • 阐述一下异步加载。
  • 请解释一下 JavaScript 的同源策略。
  • GET和POST的区别,何时使用POST?
  • ajax 是什么?ajax 的交互模型?同步和异步的区别?如何解决跨域问题?
  • Ajax的最大的特点是什么。
  • ajax的缺点
  • ajax请求的时候get 和post方式的区别
  • 解释jsonp的原理,以及为什么不是真正的ajax
  • 什么是Ajax和JSON,它们的优缺点。

# 前端概括性问题

  • 常使用的库有哪些?常用的前端开发工具?开发过什么应用或组件?
  • 对BFC规范的理解?
  • WEB应用从服务器主动推送Data到客户端有那些方式?
  • 平时如何管理你的项目,如何设计突发大规模并发架构?
  • 那些操作会造成内存泄漏?
  • 谈谈你认为怎样做能使项目做的更好?
  • php中rmdir可以直接删除文件夹吗?该目录必须是空的,而且要有相应的权限--来自api
  • phpinset和empty的区别,举例说明
  • php中$_SERVER变量中如何得到当前执行脚本路径
  • 写一个php函数,要求两个日期字符串的天数差,如2012-02-05~2012-03-06的日
  • 如何优化网页加载速度?

# 参考文章

参考链接