前端求职必备---笔试常考点

204 阅读9分钟

css的盒子模型的属性是百分比参照

答案解析:

  1. 参照父元素宽度的元素:padding、margin、width、text-indent
  2. 参照父元素高度的元素:height
  3. 参照继承父级属性:font-size、line-height
  4. 特殊:相对定位的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

解析:本题考察点为函数的传参、全局变量与局部变量的优先级、变量提升

解析如下:

  1. 声明并且赋值全局变量 foo
  2. 匿名函数的执行,并且传参,形参是全局变量foo的引用
  3. 变量提升:var foo ; (匿名函数中的局部变量,但是无效,因为和形参同名,所以再次声明相同的参数时,无效)
  4. 打印foo.n ,js输出形参foo(全局变量foo的引用)
  5. 形参的n的内容发生变化,同时改变全局变量的内容
  6. 形参被指向新的引用。

常见的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. 二叉排序树 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>
  • 标签说明以及相关属性
    1. 定义音频或者声音
    2. 相关属性
属性描述
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,表示被解析的值的进制。

特点:

  1. 将字符转成整数
  2. 如果字符串头部有空格,空格会被自动去除
  3. 如果第一个参数不是字符串,会先转成字符串再进行转换
  4. 如果字符串的第一个字符不能转换成数字,则返回NaN,否则将字符依次一个个转换,直到不能进行下去,则返回转换好的内容。
  5. 若字符串以0X或者是0x开头,parseInt会按照十六进制解析

参考链接

html常用元素margin和padding的值

  1. h1~h6标签、dl标签默认有margin(top、botoom且相同),没有默认padding
  2. ol、ul标签默认有margin(top、botoom且相同),有默认padding-left
  3. 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执行的地址所存储的内容

移动浏览器中,触摸触发相关的事件.

  1. click事件

单击事件,类似于pc端的click,但在移动端会有200ms~300ms

  1. touch事件
  2. touchstart: 手指触摸到屏幕会触发
  3. touchmove: 当手指在屏幕上移动时,会触发
  4. touchend:当手指离开屏幕,会触发
  5. touchcancel: 手指触摸屏幕,系统被其他打断了touch行为,会触发该事件

异常处理的try-catch块

  • try-catch 捕获异常
  • try-finally 清除异常
  • try-catch-finally 处理所有异常(如果有finally 无论是否有异常都会执行这一部分)