css的盒子模型的属性是百分比参照
答案解析:
- 参照父元素宽度的元素:padding、margin、width、text-indent
- 参照父元素高度的元素:height
- 参照继承父级属性:font-size、line-height
- 特殊:相对定位的top(bottom)、left(right)分别参照父元素内容区域的高度、宽度。绝对定位则是参考最近定位父元素的包括padding的高度、宽度
八大排序算法
答案解析:
- 不稳定排序:快、选、希、堆
- 稳定排序:插、冒、基、归
!(upload-images.jianshu.io/upload_imag…)
js的全局函数
答案解析:
以下枚举不太常见的:
isNaN() Number() parseFloat() parseInt() String() unescape()
getClass() isFinite()判断是否为无穷大的值
访问超链接样式不失效的伪类设置情况
答案解析:
L-H-V-A
a:link{}
a:hover{}
a:visited{}
a:actived{}
二叉树的前中后排序
- 已知前中、中后都可以推导出二叉树的排序顺序
TCP和UDP的区别
- TCP:可靠、需要建立连接、面向字节流传输、只支持点对点连接、数据包为20字节
- UDP:不可靠、不需要建立连接、面向报文传输、支持多对多、一对多、多对一连接,数据包为8字节
js事件循环机制的打印顺序
执行顺序记住是 第一个宏任务执行完成->执行全部微任务->执行下一个宏任务(setTimeout),其中只有promise的回调函数是微任务,在promise中的
js函数形参、实参、局部变量之间的应用关系
var foo = {n:1};
(function(foo){
console.log(foo.n);
var foo.n = 3;
foo = {n:2};
console.log(foo.n);
})(foo);
console.log(foo.n);
# 结果如下:1 2 3
解析:本题考察点为函数的传参、全局变量与局部变量的优先级、变量提升
解析如下:
- 声明并且赋值全局变量 foo
- 匿名函数的执行,并且传参,形参是全局变量foo的引用
- 变量提升:var foo ; (匿名函数中的局部变量,但是无效,因为和形参同名,所以再次声明相同的参数时,无效)
- 打印foo.n ,js输出形参foo(全局变量foo的引用)
- 形参的n的内容发生变化,同时改变全局变量的内容
- 形参被指向新的引用。
常见的sql语句的应用
Having语句弥补通常于Group by语句联合使用,用来过滤掉Group by返回的记录集,解决了Where关键词不能和聚合函数联用使用的不足- select count(*) from table 表示返回表中包括空行和重复行在内的行数,但是会扫描所有列
- select count(1) from table 也是返回表中包括空行和重复行在内的行数,不会扫描所有列,1其实就是表示有多少个符合条件的行,但是此时没有where,所有没条件也就是返回总行数
- select count(id) from table 表示返回表中存在该列id的行数,但是该列的值不为空
谈谈渐进增强和优雅降级的理解?
渐进增强: 针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能以达到更好的用户体验
优雅降级: 一开始就构建完整的功能,然后再针对低版本浏览器进行兼容
jQuery操作DOM的方法
获取DOM的内容和属性
text() //设置或者返回所选元素文本内容
html() //设置或返回元素所需内容(包括HTML标记)
val() // 设置或返回表单字段的值
attr() //获取属性值 ,例如:attr('href')
常见的选择器
:first //第一个元素
:last //最后一个元素
:even //所有奇数元素
:odd //所有偶数元素
:eq //第n个元素(默认从0开始)
:gt //列表大于n的元素
:It //列表小于n的元素
[attribute = value] //所有带value属性的元素
捕获以及冒泡事件、事件监听器
- e.target 获取的是
触发该事件的元素 - e.currentTarget 获取是
绑定该事件的元素 - addEventListener 的第三个参数是默认为false,默认事件在冒泡阶段执行,第三个参数是true,则在捕获阶段执行
- 事件捕获和冒泡是先捕获后冒泡
css的什么属性给span元素设置宽高
使用display可以改变元素的布局方式,将内联布局变成块级布局。display设置为block、flex、inline-block、table都达到目的
正则表达式的使用
[]字符集合
一个集合在正则表达式中只代表一个字符匹配,也就是用来匹配满足该集合的一个字符即可,在集合中可以使用
^、&&、||分别表示补集、交集、并集
[a-z && [^a-c]] //表示匹配除了a-c的所有小写字母
()正则规则表达式分组
可以将一段正则表达式看作是一个整体,里面可以用
|表示或,分组意义是可以将几个字符组合成一个整体
(one|two)* //表示一个或者多个one/two
- ^ 和 & 是表示一个正则表达式开头以及结尾的内容
^a\\d{3}b& // 表示以a开头、之后是3个数字,再以b结尾的 字符
- 字符转义 / 的使用
如果我们要使用已经被正则表达式赋予了特殊含义的字符的时候,使用需要
\进行转义
- 正则表达式的相关函数(类)
- 预定义字符集
* //任意一个字符
\d //任意数字
\D //非数字
\s //任意一个空白字符
\S //任意空白字符
\w //任意一个单词字符
\W //非单词字符
- 数量词
二叉树的性质
- 二叉排序树 1.任一子树都有"左子树<子树根节点<右子树"
进程与线程的概念
进程: 是程序的一次执行过程,是程序过程中分配和管理资源的基本单位.一共有5种状态:初始、就绪、等待、执行、终止状态;
线程: 线程是CPU调度和分派的基本单位;同一个进程中的所有的线程是共享进程的全部资源;线程单独占用的都是不共享的,其中包括:栈、寄存器、计数器。线程间共享的是:堆、全局变量和静态变量。
Video/Audio中会触发的事件有?
方法: load()、play()、pause()
事件: play()、playing() pause()、seeked()、seeking()、abort()当音频/视频的加载已放弃时触发
常用的Math数学函数
- Math.abs //获取绝对值
- Math.ceil(1.3) //向上取整 为2
- Math.floor(1.3) // 向下取整 为1
ES6的新增遍历、查询、过滤、映射数组
- arr.forEach() 遍历访问,不能用break、continue;
- arr.filter() 过滤数组内容,返回的子数组
正则表达式
- 身份证:
^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9X]$
- 地区码: [1-9]\d{5}
- 年份:(1800年~3999年): (18|19|([23]\d))\d{2}
- 月份:(0[1-9])|10|11|12
- 天数: ([0-2][1-9])|10|20|30|31
- 顺序码: \d{3}
- 校验码: [0-9X]
哈夫曼编码
哈夫曼编码又称霍夫曼编码,根据字符出现的频率来最大化节省字符(编码)的存储空间。
构建哈夫曼编码步骤如下:
- 每次取两个最小权值(出现频率次数最少的),构建成新的树,并且生成新的节点放在树中,依次比较合并,每一个需要编码的字符都将是该叶子节点。最后根据叶子节点的权值以及高度求和则为带权路径长度
HTML代码标签层级的规范
- 块级元素可以包含内联元素或者某些块级元素,但是内联元素不能包含块级元素,只能包含内联元素
- 有几个特殊的块级元素只能包含内联元素,不能包含块级元素。例如h1、h2、h3、p、dt
- p元素不能包含在块级元素里面
- a标签可以包含任何元素,除了自身
- li标签内可以包含div元素
HTML5的新媒体查询属性
audio
- 示例
<audio controls>
<source src="house.mp3">
</audio>
- 标签说明以及相关属性
- 定义音频或者声音
- 相关属性
| 属性 | 描述 |
|---|---|
| loop | 音频结束后自动重新播放 |
| src | 音频文件的url |
| preload | 网页加载,音频加载方式: auto、meta、none (分别表示加载整个音频、只加载元数据、页面加载后不加载音频) |
| autoplay | 音频自动播放 |
video
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
您的浏览器不支持 video 标签。
</video>
embed
用来定义一个容器,嵌入外部应用或者互动程序(插件)
//嵌入flash动画
<embed src="helloworld.swf">
parseInt的用法
返回的值有两种可能,不是一个十进制整数,就是返回NaN
parseInt(string, radix ?)
- string:表示要解析的值,如果参数不是字符串,会将其转换成字符串(toString),字符串的开头空白字符会自动被忽略掉
- radix:可选,从2到36,表示被解析的值的进制。
特点:
- 将字符转成整数
- 如果字符串头部有空格,空格会被自动去除
- 如果第一个参数不是字符串,会先转成字符串再进行转换
- 如果字符串的第一个字符不能转换成数字,则返回NaN,否则将字符依次一个个转换,直到不能进行下去,则返回转换好的内容。
- 若字符串以
0X或者是0x开头,parseInt会按照十六进制解析
html常用元素margin和padding的值
- h1~h6标签、dl标签默认有margin(top、botoom且相同),没有默认
padding值 - ol、ul标签默认有margin(top、botoom且相同),有默认
padding-left值 - table标签没有默认margin、padding值,th、td标签没有默认margin但是有默认padding
img实现鼠标的操作
- title 是鼠标悬停、出现文字提示
- alt是图片没有加载出来,显示图像的替代文本
js字符与ASCll码互转
- 将字符转成ASCll码
var str = 'A'
str.charCodeAt()
- 将ASCll码转为字符
var num = 97
String.fromCharCode(num)
c/c++的基本数据的所占字节数
- short 占两个字节
- int 占4个字节
- 指针变量占用4个字节
- char 占1个字节
数据库事务特征
原子性、一致性、持久性、隔离性
sql语句
- having只能用在group by之后,对分组后的结果进行筛选行
- where后的条件表达式里面不允许使用聚合函数,而having可以和where
c语言的指针和数组的指向关系
int a[]={1,2,3,4};
int *b=a;
*b+=2;
*(b+2)=2;
b++;
printf("%d,%d\n",*b,*(b+2));
- b是一个指针对象,存的是a数组的首地址,使用*b则可以获取到b执行的地址所存储的内容
移动浏览器中,触摸触发相关的事件.
- click事件
单击事件,类似于pc端的click,但在移动端会有200ms~300ms
- touch事件
- touchstart: 手指触摸到屏幕会触发
- touchmove: 当手指在屏幕上移动时,会触发
- touchend:当手指离开屏幕,会触发
- touchcancel: 手指触摸屏幕,系统被其他打断了touch行为,会触发该事件
异常处理的try-catch块
- try-catch 捕获异常
- try-finally 清除异常
- try-catch-finally 处理所有异常(如果有finally 无论是否有异常都会执行这一部分)