Web 网页前端基础知识概念和算法 - 文章教程

Web 网页前端基础知识概念和算法

发布于 2018-01-26 字数 6886 浏览 1623 评论 0

Web 网页前端基础知识概念和算法

HTML + CSS

1、对 WEB 标准以及 W3C 的理解与认识

标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外链 CSS 和 JS 脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性。

2、xhtml 和 html 有什么区别

HTML 是一种基本的 WEB 网页设计语言,XHTML 是一个基于 XML 的置标语言,最主要的不同:

  • XHTML 元素必须被正确地嵌套。
  • XHTML 元素必须被关闭。
  • 标签名必须用小写字母。
  • XHTML 文档必须拥有根元素。

3、Doctype 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

用于声明文档使用那种规范(html/Xhtml)一般为 严格 过度 基于框架的 html 文档,加入 XML 声明可触发,解析方式更改为 IE5.5  拥有 IE5.5 的 bug

4、行内元素有哪些?块级元素有哪些?CSS的盒模型?

块级元素:div、p、h1、h2、h3、h4、form、ul
行内元素:a、b、br、i、span、input、select
CSS 盒模型:content、border、margin、adding

5、CSS 引入的方式有哪些? link 和 @import 的区别是?

内联 内嵌 外链 导入
区别 :同时加载
前者无兼容性,后者 CSS2.1 以下浏览器不支持
Link 支持使用 JavaScript 改变样式,后者不可

6、CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和 important 哪个优先级高?

标签选择符 类选择符 id选择符
继承不如指定 Id > class > 标签选择
后者优先级高

7、前端页面有哪三层构成,分别是什么?作用是什么?

结构层 Html 表示层 CSS 行为层 JS

8、的基本语句构成是?

选择器 {属性1:值1;属性2:值2;……}

9、你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?

  • IE(IE内核)
  • 火狐(Gecko)
  • 谷歌(webkit)
  • opear(Presto)

10、写出几种 IE6 BUG 的解决方法

1.双边距 BUG float 引起的 使用display
2.3像素问题 使用 float 引起的 使用dislpay:inline -3px
3.超链接 hover 点击后失效 使用正确的书写顺序 link visited hover active
4.IE z-index 问题 给父级添加 position:relative
5.Png 透明 使用 JavaScript 代码 改
6.Min-height 最小高度 !Important 解决
7.select 在 IE6下遮盖 使用 iframe 嵌套
8.为什么没有办法定义 1px 左右的宽度容器(IE6 默认的行高造成的,使用 overflow:hidden;zoom:0.08;line-height:1px)

11、<img> 标签上 title 与 alt 属性的区别是什么?

Alt 当图片不显示是 用文字代表。
Title 为该属性提供信息

12、描述 CSS Reset 的作用和用途。

Reset 重置浏览器的 CSS 默认属性浏览器的品种不同,样式不同,然后重置,让他们统一

13、解释 CSS Sprites 如何使用。

CSS 精灵把一堆小的图片整合到一张大的图片上,减轻服务器对图片的请求数量

14、浏览器标准模式和怪异模式之间的区别是什么?

盒子模型 渲染模式的不同,使用 window.top.document.compatMode 可显示为什么模式

15、你如何对网站的文件和资源进行优化?期待的解决方案包括:

文件合并
文件最小化/文件压缩
使用CDN托管
缓存的使用

16、什么是语义化的 HTML?

直观的认识标签 对于搜索引擎的抓取有好处

17、清除浮动的几种方式,各自的优缺点

1.使用空标签清除浮动 clear:both(理论上能清除任何标签,增加无意义的标签)
2.使用 overflow:auto(空标签元素清除浮动而不得不增加无意代码的弊端,使用 zoom:1 用于兼容IE)
3.是用 afert 伪元素清除浮动,用于非IE浏览器

JavaScript

1、JavaScript 的 typeof 返回哪些数据类型

Object number function boolean underfind

2、例举 3 种强制类型转换和 2 种隐式类型转换?

强制(parseInt、parseFloat、number)
隐式(== – ===)

3、split() 和 join() 的区别

前者是切割成数组的形式,后者是将数组转换成字符串

4、数组方法 pop()、push()、unshift()、shift()

  • Push() 尾部添加
  • pop() 尾部删除
  • Unshift() 头部添加
  • shift() 头部删除

6、IE 和 DOM 事件流的区别

1.执行顺序不一样
2.参数不一样
3.事件加不加on
4.this指向问题

7、IE 和标准下有哪些兼容性的写法

var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
var target = ev.srcElement||ev.target

8、ajax 请求的时候 get 和 post 方式的区别

一个在url后面 一个放在虚拟载体里面
有大小限制
安全问题
应用不同 一个是论坛等只需要请求的,一个是类似修改密码的

9、call 和 apply 的区别

Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)

10、ajax 请求时,如何解释 json 数据

使用eval parse 鉴于安全性考虑 使用 parse 更靠谱

12、写一个获取非行间样式的函数

function getStyle(obj,attr,value){
	if(!value){
		if(obj.currentStyle){
			return obj.currentStyle(attr)
		}else{
			obj.getComputedStyle(attr,false)
		}
	}else{
		obj.style[attr] = value
	}
}

13、事件委托是什么

让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行。

14、闭包是什么,有什么特性,对页面有什么影响

闭包就是能够读取其他函数内部变量的函数。

15、如何阻止事件冒泡和默认事件

canceBubble return false

16、添加 删除 替换 插入到某个接点的方法

obj.appendChidl()
obj.innersetBefore
obj.replaceChild
obj.removeChild

17、解释 jsonp 的原理,以及为什么不是真正的 ajax

动态创建 script 标签,回调函数
Ajax 是页面无刷新请求数据操作

18、JavaScript 的本地对象,内置对象和宿主对象

本地对象为 array obj regexp 等可以 new 实例化
内置对象为 gload Math  等不可以实例化的
宿主为浏览器自带的 document、window  等

19、document load 和 document ready 的区别

Document.onload 是在结构和样式加载完才执行 JavaScript
Document.ready 原生种没有这个方法,jquery 中有 $().ready(function)

20、== 和 === 的不同

前者会自动转换类型
后者不会

21、JavaScript 的同源策略

一段脚本只能读取来自于同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协议和端口号的组合

22、编写一个数组去重的方法

function oSort(arr){
	var result ={};
	var newArr=[];
	for(var i=0;i<arr.length;i++){
		if(!result[arr[i]]){
			newArr.push(arr[i])
			result[arr[i]]=1
		}
	}
	return newArr
}

23、排序算法

快速排序

function oSort(arr){
	if(arr.length<=1){
		return arr
	}
	var left=[];
	var right=[];
	var oNum = Math.floor(arr.length/2);
	var oNumVode = arr.splice(oNum,1);
	for(var i=0;i<arr.length;i++){
		if(arr[i]<oNumVode){
			left.push(arr[i])
		}else{
			right.push(arr[i])
		}
	}
	return oSort(left).concat([oNumVode],oSort(right))
}

冒泡排序

var array = [5, 4, 3, 2, 1];
var temp = 0;
for (var i = 0; i < array.length; i++){
	for (var j = 0; j < array.length - i; j++){
		if (array[j] > array[j + 1]){
			temp = array[j + 1];
			array[j + 1] = array[j];
			array[j] = temp;
		}
	}
}

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2891 文章
评论
84935 人气
更多

推荐作者

勿忘心安

文章 0 评论

ekko

文章 0 评论

江挽川

文章 0 评论

献世佛

文章 0 评论

Meets

文章 0 评论