第一次面试中遇到的问题
文中如果有什么理解的不对的,或者是错误的欢迎大家指出来.在这里谢谢大家.下面是我在面试中遇到的一些问题.
第一题 什么是面向对象?
对照面向过程就很容易理解了,例如,你想吃鱼香肉丝,面向过程就是买菜买调料做菜出锅吃鱼香肉丝这一系列的逻辑过程,而面向对象就是找个餐馆点一个鱼香肉丝付钱就能吃了。面向对象就是把事物对象化,包括属性和行为,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
(这是我在论坛上发帖,一个网友的回复,我觉的说的超级好,就引用了)
第二题 如果公司现在要用的框架你没有学习过,你会通过哪些方式学习并快速的掌握呢?
1.通过它的官方文档
2.看书,看视频
3.论坛,等
第三题 简单说一下和svg或者canvas
canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术。
SVG 和 VML 使用一个 XML 文档来描述绘图。SVG 绘图很容易编辑与生成,但功能明显要弱一些。
canvas可以完成动画、游戏、图表、图像处理等原来需要Flash完成的一些功能。
第四题 从输入URL到显示页面,都经历了什么?
1.首先在浏览器地址栏输入URL
2.浏览器先查看浏览器的缓存-系统缓存-路由缓存,如果缓存中有,会直接在屏幕中显示页面内容.若没有,则跳到第三步操作
3.在发送http请求前,需要域名解析(DNS解析)(DNS(域名系统Domain Name System)是互联网的核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更加方便的访问互联网,而不用去记住IP地址.)解析获取相应的IP地址.
4.浏览器向服务器发送TCP连接,与浏览器建立TCP三次握手.
5.握手成功后,浏览器向服务器发送http请求,请求数据包.
6.服务器处理收到的请求,将数据返回至浏览器
7.浏览器收到http相应
8.读取页面内容,浏览器渲染,解析html源码
9.生成DOM树,解析css样式,js交互
10.客户端和服务器交互
11.ajax查询
第五题 当咱们网站更新时,如用户浏览器中有缓存,如何让用户的网站也更新呢?
在页面url后面加hash,可以是时间戳或者随机数,这样每次url都不同,浏览器就不会偷懒了,每次都向服务器取最新的资源,也就解决了react的大坑—浏览器缓存问题。
(这个问题,我当时没有回答出来,这是我在网上找的其他人的回答,如果有什么不对的,希望大家补充一下,谢谢)
第六题 H5和css3的新特性有哪些?
H5的新特性:
- 标签的语义化(header,footer,nav等语义化标签)
- canvas新标签
- sessionstorage(仅在关闭浏览器之前有效)和 localstorage(数据存储永久有效;)两个本地储存
- 视频和音频
- 表单控件(email,date,url,time)
c3新增特性:
1.盒子模型:box-sizing
2.盒子阴影 box-shadow:
3 边框:圆角(border-radius)、边框阴影(box-shadow)
4.背景图片的大小:background-size
5.2D,3D转化 transform:translate(x,y)、rotate(x,y)、skew(x,y)、scale(x,y)
6.新增的伪元素(:nth-child),伪类(::after),关系,选择器,属性选择器
7.媒体查询(@media
8.文字阴影text-shadow
9.在c3中唯一引入的伪元素是:selection