这篇文章主要围绕前端开发面试知识汇总-css篇和前端开发面试宝典展开,旨在为您提供一份详细的参考资料。我们将全面介绍前端开发面试知识汇总-css篇的优缺点,解答前端开发面试宝典的相关问题,同时也会为您
这篇文章主要围绕前端开发面试知识汇总-css篇和前端开发面试宝典展开,旨在为您提供一份详细的参考资料。我们将全面介绍前端开发面试知识汇总-css篇的优缺点,解答前端开发面试宝典的相关问题,同时也会为您带来2017年秋季校招前端面经(百度,腾讯,网易,华为,乐视等) 前端面试笔试知识汇总1(含答案); 前端面试笔试知识汇总2(含答案);前端面试笔试知识汇总3(含答案);前端 2018 届校招笔试面经【百度,阿里,腾讯,阿里文娱,携程,美团,拼多多】、2018java 面试知识汇总、2020校招Java开发面试知识点解析(附最新笔面试题)、9道经典前端开发面试题及答案的实用方法。
本文目录一览:- 前端开发面试知识汇总-css篇(前端开发面试宝典)
- 2017年秋季校招前端面经(百度,腾讯,网易,华为,乐视等) 前端面试笔试知识汇总1(含答案); 前端面试笔试知识汇总2(含答案);前端面试笔试知识汇总3(含答案);前端 2018 届校招笔试面经【百度,阿里,腾讯,阿里文娱,携程,美团,拼多多】
- 2018java 面试知识汇总
- 2020校招Java开发面试知识点解析(附最新笔面试题)
- 9道经典前端开发面试题及答案
前端开发面试知识汇总-css篇(前端开发面试宝典)
前端开发面试知识汇总-css篇
- 一、CSS盒模型
- 1. 盒模型简介
- 2.IE盒子模型
- 3.标准W3C盒子模型
- 4.box-sizing取值以及含义
- 二、元素类型
- 1.元素类型简介
- 2.块级元素
- 3.行内元素
- 4.行内块元素
- 5.置换元素
- 三、样式优先级
- 1. css选择器类别
- 2. css选择器优先级
- 四、垂直水平居中
- 1. 水平居中
- 2. 垂直居中
- 3. 水平垂直居中
本篇博客主要介绍自己在今年秋招准备前端开发面试时遇到的css布局相关问题,也是css布局一些比较基础的知识,希望对大家在前端面试或学习前端css布局相关知识能够有所帮助。
一、CSS盒模型
1. 盒模型简介
用来封装页面元素的矩形区域,HTML元素可以看作一个盒子。CSS中的盒模型包括IE盒子模型和标准的W3C盒子模型。如下图所示,一个盒子包含content(内容区)、padding(内边距)、border(边框)、margin(外边距)
一个盒子可以定义其height、width、padding、border、margin属性
2.IE盒子模型
IE盒子模型中定义的元素的height、width属性包含border和padding的大小即:
IE盒子模型中:
height = content_height + padding_top + padding_bottom + border_top + border_bottom。
width = content_width + padding_left + padding_right + border_left + border_right。
因此,IE盒子模型中盒子占有的高、宽即为定义的元素的height、width,增大padding和border会使内容区变小。
3.标准W3C盒子模型
标准W3C中定义的元素的height、width属性只是内容(content)的高度和宽度,即:
标准W3C盒子模型中:
height = content_height
width = content-width
因此,标准W3C盒子模型中盒子占有的高度、宽度为:
盒子Height = height + border_top + border_bottom + padding_top + padding_bottom。
盒子Width = width + border_left + border_right + padding_left + padding_right。
4.Box-sizing取值以及含义
CSS3新增Box-sizing属性可以定义盒子类型,取值如下
Box-sizing:content-Box | border-Box | padding-Box
content-Box:即标准W3C盒子模型
border-Box:即IE8盒子模型
padding-Box:
height = content_height + padding_top + padding_bottom。
width = content_width + padding_left + padding_right。
二、元素类型
@L_301_24@1.元素类型简介
常见元素类型有:
块级元素、行内(内联)元素、行内块元素、置换元素
2.块级元素
2.1块状元素以块的形式显示,在页面中显示为一个矩形块的样式。
2.2块状元素一般独占一行,块状元素默认自上而下顺序排列。
2.3可以定义块状元素的宽度和高度属性。
2.4块状元素可以作为承载其他元素的容器,可以装行内元素和其他块级元素。
2.5常见块级元素:
div-------------------最常用的块级元素
h1-h6---------------标题
p---------------------段落
ul--------------------无序列表
ol--------------------有序列表
li---------------------列表项
form----------------表单
dl-------------------和dt dd搭配使用的块级元素
3.行内元素
3.1行内元素不会独占一行,即行内元素的后一个元素会紧随行内元素排列(如果一行可以放下行内元素和下一个元素)。
3.2行内元素定义的宽高属性不能正常显示,行内元素的宽高会根据其内容展开。
3.3遵循盒子模型基本规则,可以设置padding、border、margin属性但行内元素设置左右margin有效,上下margin无效;设置上下左右的padding都有效。
3.4常见行内元素:
span-------------------常用内联容器
a------------------------超链接(锚点)
img---------------------图片
input-------------------输入框
label-------------------表单标签
textarea--------------多行文本输入框
select-----------------项目选择
em---------------------强调
strong-----------------粗体强调等
4.行内块元素
4.1行内块元素综合了块级元素和行内元素的特性
4.2拥有行内元素特性:不自动换行
4.3拥有块级元素特性:能对其设置宽高属性
5.置换元素
5.1一个内容不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素本身一般拥有固有尺寸(宽度,高度,宽高比)的元素,被称之为置换(替换)元素。即浏览器根据元素的标签和属性显示元素。
5.2置换元素是特殊的行内元素,由于其本身一般拥有固有尺寸(宽度,高度,宽高比),所以对其设置宽高属性有效。(面试可能会问)
5.3常见置换元素
img-------------------图片
input-----------------输入框
textarea------------多行文本输入框
select---------------项目选择
canvas-------------画布
6. 块级元素、行内元素、行内块元素转换
6.1通过设置display属性可以进行三种类型元素的转换。
display:block显示为块级元素
display:inline显示为行内元素
display:inline-block(css2.1新增值)显示为行内块元素
display:none该dom元素会被删除
display:list-item该元素会作为列表显示
display还可以设置一些表格属性,可以自行了解下~
三、样式优先级
1. css选择器类别
1.1基本选择器:
基本选择器 | 含义 | 备注 |
---|---|---|
* | 通用选择器,匹配所有元素 | CSS2 |
E | 元素选择器,匹配所有E类型的元素 | CSS1 |
.foo | 类选择器,匹配元素class属性为foo的元素 | CSS1 |
#id | id选择器,匹配元素id属性为id的元素 | CSS1 |
1.2组合选择器:
组合选择器 | 含义 | 备注 |
---|---|---|
E,F | 多元素选择器,匹配E类型,F类型的元素 | CSS1 |
E F | 后代选择器,匹配所有E类型的后代F元素 | CSS1 |
E>F | 子元素选择器,匹配E元素的子代F元素 | CSS2 |
E+F | 相邻选择器,匹配紧邻E元素的同级F元素 | CSS2 |
1.3属性选择器:
属性选择器 | 含义 | 备注 |
---|---|---|
E[att] | 匹配拥有 attr 属性的所有 E 元素 | CSS2 |
E[att=val] | 匹配 attr 属性等于 val 的所有 E 元素 | CSS2 |
E[att~=val] | 匹配 attr 属性包含 val 值的所有 E 元素,各个值用空格隔开 | CSS2 |
1.4伪类选择器:
伪类选择器 | 含义 | 备注 |
---|---|---|
E:active | 匹配处于活动状态的所有 E 元素 | CSS1 |
E:link | 匹配未被访问的所有 E 链接 | CSS1 |
E:visited | 匹配已被访问的E链接 | CSS1 |
E:hover | 匹配鼠标悬停其上的所有 E 元素 | CSS2 |
E:focus | 匹配获得输入焦点的所有 E 元素 | CSS2 |
E:first-child | 匹配 E 元素的第一个子元素 | CSS2 |
1.5伪元素选择器:
伪元素选择器 | 含义 | 备注 |
---|---|---|
E:before | 在E元素之前添加内容 | CSS2 |
E:after | 在E元素之前添加内容 | CSS2 |
E:first-line | 匹配E元素的第一行 | CSS1 |
E:first-letter | 匹配 E 元素的首个字符 | CSS1 |
2. css选择器优先级
同一级别,后写的样式会覆盖先写的样式。
同一级别,css引入方式不同,优先级不同:
内联(行内)样式>内部样式表>外部样式表>导入样式(@import)
四、垂直水平居中
1. 水平居中
/* 1.1行内元素相对块级元素居中 */
<div id="father">
<span id="son">
我是块级元素
</span>
</div>
#father{
width:200px;
height:200px;
background-color: antiquewhite;
text-align: center;
}
#son{
background-color: coral;
}
/* 1.2行内元素相对非块级元素居中 */
<span id="father">
<span id="son">
我是块级元素
</span>
</span>
#father{
width:200px;
height:200px;
background-color: antiquewhite;
display:block;
text-align: center;
}
#son{
background-color: coral;
}
/* 2.1块级元素相对块级元素居中 块级元素已知宽度*/
<div id="father">
<div id="son">
我是块级元素
</div>
</div>
#father{
width:200px;
height:200px;
background-color: antiquewhite;
/*2-定位方法*/
position:relative;
/*3-flex布局方法
display:flex;
justify-content:center;
*/
}
#son{
width:100px;
height:100px;
/*1-margin方法
margin:0 auto;
*/
/*2-定位方法 (-50 = -width_son/2);*/
position:absolute;
left:50%;
margin-left:-50px;
background-color: coral;
}
/* 2.1块级元素相对块级元素居中 块级元素宽度未知*/
<div id="father">
<div id="son">
我是块级元素
</div>
</div>
#father{
width:200px;
height:200px;
background-color: antiquewhite;
/*1-定位方法*/
position:relative;
/*2-flex布局方法
display:flex;
justify-content:center;
*/
}
#son{
height:100px;
/*1-定位方法(transform)*/
position:absolute;
left:50%;
transform:translateX(-50%);
background-color: coral;
}
2. 垂直居中
/* 1.1单行内元素相对块级元素居中 */
<div id="father">
<span id="son">
我是单行行内元素
</span>
</div>
#father{
width:200px;
height:200px;
background-color: antiquewhite;
}
#son{
background-color: coral;
line-height:200px;
}
/* 1.2多行行内元素相对块级元素居中 */
<div id="father">
<span id="son">
我是多行行内元素多行行内元素啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
</span>
</div>
#father{
width:200px;
height:200px;
background-color: antiquewhite;
display:table-cell;
vertical-align: middle;
}
#son{
background-color: coral;
}
/* 2.1块级元素相对块级元素居中 块级元素已知高度*/
<div id="father">
<div id="son">
我是块级元素
</div>
</div>
#father{
width:200px;
height:200px;
background-color: antiquewhite;
/*2-定位方法*/
position:relative;
/*2-flex布局方法
display:flex;
align-items:center;
*/
}
#son{
width:100px;
height:100px;
/*1-定位方法 (-50 = -height_son/2);*/
position:absolute;
top:50%;
margin-top:-50px;
background-color: coral;
}
/* 2.1块级元素相对块级元素居中 块级元素高度未知*/
<div id="father">
<div id="son">
我是块级元素
</div>
</div>
#father{
width:200px;
height:200px;
background-color: antiquewhite;
/*1-定位方法*/
position:relative;
/*2-flex布局方法
display:flex;
align-items:center;
*/
}
#son{
height:100px;
/*1-定位方法(transform)*/
position:absolute;
top:50%;
transform:translateY(-50%);
background-color: coral;
}
3. 水平垂直居中
2017年秋季校招前端面经(百度,腾讯,网易,华为,乐视等) 前端面试笔试知识汇总1(含答案); 前端面试笔试知识汇总2(含答案);前端面试笔试知识汇总3(含答案);前端 2018 届校招笔试面经【百度,阿里,腾讯,阿里文娱,携程,美团,拼多多】
本文是根据面试时间,对个人求职过程中的所有面试进行了汇总,大小类型的公司都有。由于面试时间问题,面试的问题难免会有一些疏漏。
建议:面试完多总结,面试中遇到的不会的,一定要搞懂。多看别人的面经,看到不懂的也尽量弄懂。毕竟面试很大一部分问题是差不多的,其他就靠个人的平时积累了。
此外:也对面试中常见的问题进行了汇总,并给出了答案,供大家参考,附链接:
前端面试笔试知识汇总1(含答案);
前端面试笔试知识汇总2(含答案);
前端面试笔试知识汇总3(含答案);
最后在附上 师妹今年校招前端面经:
前端 2018 届校招笔试面经【百度,阿里,腾讯,阿里文娱,携程,美团,拼多多】
面试官人蛮好的,问了很多我都不知道,所以什么方面都问了一些,不过最后还是说了句,算你过了。
技术面:
自我介绍语言混,没有逻辑估,估计30多秒。
问了一个排序算法的优化(具体算法名字忘了)
网络安全方面的问题
简历的项目描述(没有总结过,说的很渣)
对测试的一些了解
模块化开发了解吗
如何编写代码
网站性能优化的方法
要不要做测试(我说不要)
HR面:
自我介绍
你的优势(最好自己先总结好)
如果面试没通过,你觉得原因是什么
为什么想来华为
曾经面临的最大困难,解决办法
综面(8月下旬):
具体没啥问题,就是针对简历来问的一些基本信息。
总结:但是因为只会前端的,还有前端的项目比较简单,还有就是本科学校,这些加在一起被歧视了......(这些你可以从面试官说话的语气感觉出来)
最后,没有收到优招通过的短信。我同学收到了通过的短信,最后也没有被叫去签,华为资源池是有多大啊。
在优招之前,还收到了某部门的短信,说是我们这些人被选中了,组建了一个微信群,HR让我们不要去其他部门,经常说该部门怎么样,只要优招再面一次就可以加入华为。还好自己也没抱希望于华为,即使这样还是很认真的学习前端的东西,不然人生还真是毁了。人啊,永远不要寄希望与别人。
阿里实习生面试(5月份)
技术面:
自我介绍
有没有项目经历(无);
对象属性的遍历;
promise的实现;
样式的优先级;
一道简单的对象引用问题
用js写过什么(我说瀑布流,但是临场就写了一点点)
一道js题目(关于引用的)
还有其他一些题目忘了......
总结:我刚见面就说自己才学了几个月,然后面试官就说你这是在让我(具体说啥忘了),其实这句话,就暴露出我的不自信,也让面试官直接就否定了我。后面其实就是应付下我。
大众点评(6月底,第一次电话面试)
技术面:
自我介绍(杂乱,直接被面试官终止了,估计听不下去了)
css display属性有哪些值,各有什么表现;(不知道为什么,这个问题就是听不清楚........重复了好多遍(尴尬))
position属性的值
盒模型和Box-sizing
三级菜单的实现,简单描述下你的实现过程;不用框架
一个table,点击按钮,实现某一列的刷新,不能采用框架,简单描述下实现过程
事件绑定的具体实现...事件移除
ajax的实现
对MVC有了解吗;这个表示知道有这个,但是不是很了解;也就简单的说了下
nodejs知道吗;那时候对noedjs一知半解的。
你觉得应该重点掌握哪些知识;我答原生js,他补充:除了原生js之外,去了解一些框架,nodejs等,
页面的渲染过程(大概是这样)
json是什么的缩写
缓存机制
dom2和dom0之间的区别
dom3新增加了哪些特性,哪些已经被完全接受了
json是什么的缩写(自己给自己挖的坑)
http请求有哪些,post和get有什么不一样
手机某一行均分为四个,不知道尺寸的情况下(这道题不是很理解,我说百分比,他说不知道尺寸,兼容各个屏幕,(媒体查询,rem,自己瞎猜的))
总结:这时候,自己也看过很多书了,前端基本有些了解,但是还是存在很多不懂的。
腾讯TST面试(8月初,电话面试)
技术面:
自我介绍
项目介绍:(遇到的难点以及解决办法)这里我还得提炼提炼;
iconfont矢量图标的优点:
- 加载文件体积小。
- 可以直接通过css的font-size,color修改它的大小和颜色,对于需要缩放多个尺寸的图标,是个很好的解决方案。
- 支持一些css3对文字的效果,例如:阴影、旋转、透明度。
- 兼容低版本浏览器。
缺点:
- 矢量图只能是纯色的。
- 制作门槛高,耗时长,维护成本也很高。
Dom0级和dom2级事件之间的区别;
代理模式的好处在哪里:对性能有怎样的影响;
web缓存,浏览器怎么知道要从缓存获取;禁止缓存,期限,修改
cookies,每次请求是否带cookie,不同域的网页怎么获取同一个cookie
原生ajax的实现,具体思路
谈一谈http状态码
谈一谈flexBox,讲一讲哪些浏览器已经支持。
实现跨域的方法,跨域包括(端口,域名,)iframe实现跨域的具体方法;
时钟7点15分的夹角是多少度(时针和分针)
冒泡和捕捉,取消冒泡,阻止默认事件;
了解webp的图片格式;
总结:老实说,我对内推根部就不报啥期望,结果竟然有机会面了一次,还是腾讯啊。面试官人非常好,你不会的他会一点一点去引导你,并且全程一直很和气。面试体验很好呢。
科华恒盛(9月上旬,电话面试)
技术面:
简单的项目介绍,没有问项目遇到的难点;
post get的区别;
多个ajax怎么处理
闭包的概念;
基本数据类型;
this的问题;
call apply之间的区别;
有没有用过sass之类的
事件循环
null和defined的区别
this的理解
HR面:
个人的一些基本信息的来哦接;
期望工作地点薪资;
对公司的了解;
总结:科华是第一给我发offer的。总体感觉其实还好,就是公司偏硬件,感觉以后对个人发展不好。
中兴(9月中旬)
投的是软件方向的。。。
技术面:
自我介绍
对C语言了解哪些
说一下策略模式,并画类图(js设计模式表示没有类图,不会画)
了解哪些排序算法
二叉树中序遍历的代码(不会写)
数据库的一个命令(具体忘了,不会)
总结:面了总共10多分钟吧,很快。很多不会,自然挂了。面试体验很好,面试官对你很好,你说不会他说没关系,一直笑呵呵。你走的时候还热情欢送,出门直接挂你。哎,真是笑里藏刀啊。
酷家乐(9月下旬)
首先是一道编程题:我想多了,没有了解题意,最后时间不够,代码没写完。
技术面:
就问了三个智力问题:
期间让我写一个智力题的算法,我说不会写,
第三个智力题没想出来怎么做;
网易(9月下旬):
技术面:
前端学了多久
节点的拷贝
基本数据类型
深度拷贝的实现(对象)
width:(100%);border:1px splid red;这样子有什么问题(不知道)
前端的一些攻击有了解吗,简单说下
项目的难点(不要说那种你解决了,但是不知道什么原因的)
了解过nodejs和es6吗
检验网址的正则
原生ajax
call和apply的区别
垃圾回收的方法,具体描述每一种方法
性能优化方法
事件委托的缺点
判断数组的方法(isArray,toString())
总结:第一次面试互联网大公司,真的很紧张啊。面试官应该也感觉到了。当然自己也知道自己回答的很差,挂了很正常。
乐视(9月下旬)
技术面1:
自我介绍
问实习做的一些事情,问的挺深入,然而我忘了怎么做的,支支吾吾说了一些,最后面试官就说你可能真的忘了:
闭包
基本数据类型
变量提升
jquery中ajax的写法
原型链
盒模型
去掉空白的正则
看过那些书(高级程序设计看了几遍,有啥收获)
math.random的范围
技术面2(是一个架构师,没问技术的):
自我介绍
项目的难点和解决方法
你的优势
后面就是针对简历上写的他比较感兴趣的进行提问
比如我当班长,参加智能车比赛的经历等其他的
职业规划
HR面:
自我介绍;
为什么学前端
对乐视的了解
年龄也聊了一下(说我比较小...)
遇到过的困难
你手上有哪些offer
有用过乐视的产品吗(我说没有,HR说为啥不买?应该说买了乐视电视的......)
总结:据说乐视HR面主要看你的表达能力和是否符合企业文化。乐视就第一面面的比较差,我没想到他会问的那么深入,自然也就没有准备过。前面和后面的面试都没有像他一样,问我的实习经历。不过还好让我过了。二面是一个架构师,后面他还谈了自己作为架构师的一些感想,不过很多不能体会,所以听了很快就忘了,但是感觉确实比较牛,人也很好。HR面的时候,全程注视着她。以前和别人交流的时候,我都不会看别人,现在我终于学会了看别人了,很高兴啊。
百度(9月下旬):
一面:
自我介绍
js基本数据类型
如何自己实现一个alert
居中的方法
继承的实现(代码)
ajax原生代码
两栏的实现(响应式的);如何实现拖动鼠标实现一边变大,一边减小。
flex的了解
写一个链式调用;
移动端Meta 的一些设置
网格的实现方法
盒模型
媒体查询
闭包的概念和作用
项目的难点
二面:
自我介绍;
为什么学习前端,怎么学的
三个tab页面,实现代码(我先给出一个一般的代码,后面又给出了优化,总体而言,面试官还是比较满意的)
你的优势,劣势(会让你说一下具体体现)
import和link的区别(说了一下,面试官说,你不了解吧?我,嗯)
性能优化方法(面试官说这些比较旧了,有没有新的方法)
为什么cdn比较快;
怎样减少http请求次数
对加密算法了解吗,怎样设计一个加密算法
前端的攻击有了解过吗
看过那些书
了解设计模式吗(我说了单例和观察者模式,并写了下代码,介绍有啥作用)
用过哪些自动化构建工具,怎么用的
最近在学什么
有没有写过插件,用js写过什么(然后就是具体描述怎么实现的)
对数据库的了解
三面:
自我介绍
一道算法题;代码实现,让优化(经提醒还是不会优化);
聊对前端的看法
人生规划
为什么选择这所学校
你的优缺点(无论是性格,还是跟其他前端应聘者的相比优势,总共说了5,6点,每一点都有具体事例说明。面试官带着神之微笑说,你还很了解自己的吗!?)
总之后面就是各种聊
总结:个人觉得自己还是蛮幸运的。之前也看过网上的一些面经,发现他们的比我难多了。面试的时候,面试官真的蛮重要的。就好比华为实习生面试的的技术面试官人就很好。当然,百度面试的体验也很好。一面的时候,来的有点晚,跑着过去的。到大厅,签到,刚坐下,就轮到我面试。进了面试官房间,自我介绍的时候,还有点小喘息。面试官也很好,他说一面就问基础的,不问其他的。还好在面试百度的时候,自己也经历过了一些面试,总体而言没有那么紧张了。最后自己也很幸运的通过了百度的面试。
腾讯(9月下旬)
技术面(女面试官):
先做一张试卷(10道题,有些深度,还有概率论,涉及蛮广的);做的比较差
试卷题目:
1、将一篇文章的每个单词首字母大写;不改变原有的格式
2、给你一个url,判断是否是同一个域名(qq.com)下的
3、原生ajax
4、angular的优缺点
5、csrf攻击,怎么阻止
6、上线后,如何监控网站
7、概率论问题
8、打不开网站,什么原因造成的,解决办法
9、如何实现跨浏览存储
10、还有一个具体是啥忘了
就试题做的情况简单聊了一下
后面在问了一些就结束了
总结:腾讯之前笔试全是c++,结果这次面试之前先让做一份试卷,也是醉了,也确实可以看出腾讯对应聘者要求懂很多,百度给我的感觉更加注重基础。女面试官全程比较严肃,没有微笑。在我之前的是一个女生,她还在腾讯实习过,最后结束的时候,她问面试官,就这样吗?(她也觉得面试聊得太少了,不敢相信这样就结束了。)面试官说,是的。 所以面试官说就到这里的时候,我也没说啥,知道说了也没啥用。直接背包走人。
远景能源(9月下旬)
没有笔试,直接拉去面试,谁知道面试之前还要做两道算法题,只做出了一道。。。
技术面:
自我介绍
react虚拟DOM为什么有优势,我用原生的为啥就慢,是什么原因;
网站打开比较卡,你怎么优化;
linix知道吗?
对H5的了解;
webscoket会用吗(不会)
对数据库了解哪些?
canvas为什么会出现,用来做什么的;
你们做的项目,用的是什么服务器,或者说在哪里跑(我说后台搞得,我不知道,然后脸色就变了,就这个问题说了一会,说我连这个都不知道......然后面试到此结束,出来直接挂)
总结:所有面试中,面试面的最不爽的一次。首 先面试官态度傲慢,其次面试官坐姿太屌丝了,穿着中裤,脚踩在桌子脚上,一副吊儿郎当的样子,最后面试没问前端的基础,就是各种瞎比比。我的的同学(其他 岗位的),不到3分钟就出来,直接说你不合适,不是我们想要的人。我擦,你好歹面一下吧,人家来了,笔试了,不面直接让走人,我也是醉了。一句话,远景面 试逼格很高,比bat还高。当然也有一个同学面过了,因为研究方向比较符合他们公司。
网龙(9月下旬)
自我介绍;
h5的新添加的特性;
css3新增的特性;
如何判断一个页面是H5;
网站性能优化方法
ajax原生js实现
为什么选择前端
你是怎么获取前端知识的,遇到问题怎么解决
localstroage和sessionstorage的区别
HR面:
自我介绍
一些私人问题;
为什么学前端,你的专业是机械的
你对自己的规划
你的优势
你手上有哪些offer
你会怎样选择一家公司,会考虑哪些因素
其他一些问题忘了
总结:总体感觉技术面比较简单,也没有那么紧张了。面对面试官的时候,心情很平静。可能是之前已经面过一些大公司了,自己对面试中不懂得也进行了总结,所以问的东西基本都知道。
有赞(10月)
有赞的面试应该是简寻上来的
技术面1:
前端学习方法
看过什么书
跨域的了解,有使用过吗,cors知道吗
闭包
数组去重的方法,说了几种,感觉他不是很满意
事件的绑定取消冒泡等
继承方式
盒模型
创建对象方式
给你一个空函数,加new和不加new的区别
技术面2(视频面,两个人):
有哪些需要nodejs环境(是自己之前说有些依赖nodejs,然后他就问哪些)
为什么来这所学校
找到工作后的规划(主要指在学校这段时间)
es6哪些特性比较吸引你
谈谈研究生生活
为什么选择前端
总结:这个面试是后面补得,之前忘了写...很多问题已经忘了。最后面试没有通过,问题可能出在:不能去实习,还有就是一些开放性问题答得不是很好。逻辑有些混乱。
海康威视(10月中旬)
先笔试,前端题目是java。。。不会,随便写了一些,最后意外获得了面试资格。
不用自我介绍,直接介绍自己的优势
盒模型;
怎么解决不同浏览器盒子大小显示不一样问题。
事件机制,捕捉冒泡,绑定事件,阻止默认事件
继承,原型
后序遍历的实现代码(不会)
闭包
h5和css3有了解吗
事件委托机制了解吗
jquery的使用
如何在页面中插入一些数据(appendchild,innerHTML)
HR面
自我介绍
以后的职业规划
项目遇到的难点,还有你是怎么解决的
一些私人问题
用三个词形容自己(具体说明)
期望薪资
为什么选择这所学校(研究生学校)
有没有其他offer
总结:技术面10多分钟结束,好像HR面时间还长一些。。。技术面的面试官一个人要面前端,安卓,java,而且还是一早上从杭州赶过来的,也是很辛苦啊。据说当晚就回去了。。。HR姐姐蛮漂亮的,能笑一笑就更好看了。
趣医网(10月中旬)
现场手机测评+加笔试。
技术面1(主要根据简历问):
css,ajax的英文名字,ajax可以同步吗
http的端口号,ftp的端口号(说错了)
restful(不知道)
gulp的一些使用
快排实现的原理
position,float的值
cookie和session的关系和区别
本科学了什么语言
c++和js有什么区别
了解哪些算法
栈和队列
H5和css3的新特性
行内元素怎么设置高度(挖坑。。。不能设置,可以设置line-height)
技术面2:
对数据结构了解吗
看过那些书;
愿意做后台吗
平时写的是js还是html(这个问题,前端肯定都写啊)
做一个智力题(没做出来。。。)
HR面
简单了解一些基本信息
为啥学前端
愿意做后端吗?
你会怎样选择一家公司
你觉得我们公司怎么样?(去了宣讲会,但没认真听,说了下蛮好的,然后说不出其他的呢)
期望工作地点,薪资
总结:进去应该还是可以学到很多,做后台我还是愿意的,可以学到很多啊。
总结
以上是小编为你收集整理的2017年秋季校招前端面经(百度,腾讯,网易,华为,乐视等) 前端面试笔试知识汇总1(含答案); 前端面试笔试知识汇总2(含答案);前端面试笔试知识汇总3(含答案);前端 2018 届校招笔试面经【百度,阿里,腾讯,阿里文娱,携程,美团,拼多多】全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
2018java 面试知识汇总
1. 多线程
1.1 多线程7种同步方法?
答:同步方法
同步代码块
使用重入锁实现线程同步(ReentrantLock)
使用特殊域变量(volatile)实现同步(每次重新计算,安全但并非一致)
使用局部变量实现线程同步(ThreadLocal)以空间换时间
使用原子变量实现线程同步(AtomicInteger(乐观锁))
使用阻塞队列实现线程同步(BlockingQueue (常用)add(),offer(),put()
1.2 四大线程池?
答:newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
1.3 进程与线程的区别?
答:进程是资源分配的基本单位,线程是调度的基本单位。进程包含线程,线程共用进程的资源。
1.4 线程的生命周期?
答:新建,就绪,运行,阻塞,结束
1.5 如何判断队列已满?
1.6 定时任务
答:newScheduledThreadPool, Timer
1.7 线程的五种状态及切换
1.8 sleep()和wait(),sleep()和yield的区别?
答:sleep()没有释放锁,
yield()直接让线程进入就绪状态,并且只能给同等级和高级的线程让步
join()调用,主线程进入阻塞状态,等待当前线程执行完,主线程才可以执行。
1.9 当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法B?不能
1.91 请说出与线程同步以及线程调度相关的方法。
答:wait():使一个线程处于等待(阻塞)状态,并且释放所持有的对象的锁;
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要处理InterruptedException异常;
notify():唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且与优先级无关;
notityAll():唤醒所有处于等待状态的线程,该方法并不是将对象的锁给所有线程,而是让它们竞争,只有获得锁的线程才能进入就绪状态;
2. 通信
http
tcp
udp
socket
2.1 tcp和udp的区别?
2.2 tcp的三次握手和四次挥手?
3. java jvm
3.1 五大组成部分图?
答:程序计数器,虚拟机栈,本地方法栈,堆,方法区
程序计数器(和系统相关)
虚拟机栈:存放局部变量
本地方法栈
堆:存放所有new出来的东西
方法区:被虚拟机加载的类信息、常量、静态常量等。
3.2 JVM规范中的五大java内存区域
4. 反射,代理,泛型
4.1 反射的作用和应用场景?反编译
4.2 Java反射的三种实现方式?
答:通过Object类的getClass方法 Class cla = foo.getClass();
通过对象实例方法获取对象 Class cla = foo.class;
通过Class.forName方式 Class cla = Class.forName("xx.xx.Foo");
4.3 jdk代理和cglib的区别?
答:jdk代理一定要有接口,cglib 没有接口;动态代理,目标对象一定要实现接口,静态代理,目标对象和代理对象都要实现接口
5. IO
字节流:InputStream, OutputStream
字符流:Reader, Writer
6. 封装,继承,多态
7. 接口与抽象类
8. 重载和重写
10. 集合
List -> ArrayList, LinkList, vector
Set -> HashSet, treeSet
Map -> HashMap, Hashtable, treeMap, concurrentHashMap,linkHashMap
11. &和&&
12. 异常
12.1 常见的异常有哪些?
答:空指针异常,数组越界异常,类找不到,算数异常
13. 自动装箱和拆箱
13.1 int和Integer有什么区别?
答:- 原始类型: byte,short,int,long,char, float,double, boolean
- 包装类型:Byte,Short,Integer,Long,Character,Float,Double, Boolean
14. 设计模式
单例模式,工厂模式,原型模式,代理模式,观察者模式,适配器模式
15. 接口服务
rest
eip
httpclient
webservice
16. 网络方面的面试题
17. 网络框架netty,Mina
18. Redis
19. spring
spring bean 的生命周期
spring的设计模式
spring ioc三种注入方式
20. NIO(non-blocking io)
21. 任务调度框架Quartz
2020校招Java开发面试知识点解析(附最新笔面试题)
前言
6月马上要到了,很多互联网企业都开始了校招。
互联网校招时间早,岗位多,并且每家的笔面试都不同。一份合适的笔面试资料,绝对能提高你的校招通过率!
Java 一些知识点
1.Java 基础知识点
2.Java 常见集合
3.高并发编程(JUC 包)
4.JVM 内存管理
5.Java 8 知识点
6.网络协议相关
7.数据库相关
8.MVC 框架相关
9.大数据相关
10.Linux 命令相关
面试,是大家从学校走向社会的第一步。
互联网公司的校园招聘,从形式上说,面试一般分为 2-3 轮技术面试 +1 轮 HR 面试。
但是一些公司确实是没有 HR 面试的,直接就是三轮技术面。
技术面试中,面试官一般会先就你所应聘的岗位进行相关知识的考察,也叫基础知识和业务逻辑面试。
只要你回答的不是特别差,面试官通常会说:“咱们写个代码吧”,这个时候就开始了算法面试。
也就是说,一轮技术面试 = 基础知识和业务逻辑面试 + 算法面试。
本文我们主要从技术面试聊起。 技术面试包括:业务逻辑和基础知识面试。
首先是业务逻辑面试 ,也就是讲项目。
面试官会对你简历上写的若干个项目其中之一拿出来和你聊聊。在期间,会针对你所做的东西进行深度挖掘。
包括:为什么要这么做?优缺点分析,假如重新让你做一次,你打算怎么做? 等等。这个环节主要考察我们对自己做过的项目(实习项目或者校内项目)是否有一个清晰的认识。
关于业务逻辑面试的准备,建议在平时多多思考总结,对项目的数据来源、整体运行框架都应该熟悉掌握。
比如说你在某公司实习过程中,就可以进行总结,而不必等到快离职的时候慌慌张张的去总结该项目。
Java 基础知识
01. 面向对象的特性有哪些?
封装、继承和多态。
02. Java 中覆盖和重载是什么意思?
覆盖(Override)是指子类对父类方法的一种重写,只能比父类抛出更少的异常,访问权限不能比父类的小。
被覆盖的方法不能是 private 的,否则只是在子类中重新定义了一个方法;重载(Overload)表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同。
那么构成重载的条件有哪些?
参数类型不同、参数个数不同、参数顺序不同。
函数的返回值不同可以构成重载吗?为什么?
不可以,因为 Java 中调用函数并不需要强制赋值。举例如下:
如下两个方法:
voidf(){} intf(){ return1;}
只要编译器可以根据语境明确判断出语义,比如在 int x = f();中,那么的确可以据此区分重载方法。
不过, 有时你并不关心方法的返回值,你想要的是方法调用的其他效果 (这常被称为 “为了副作用而调用”),这时你可能会调用方法而忽略其返回值,所以如果像下面的调用:
fun();
此时 Java 如何才能判断调用的是哪一个 f( ) 呢?别人如何理解这种代码呢?所以,根据方法返回值来区分重载方法是行不通的。
03. 抽象类和接口的区别有哪些?
·抽象类中可以没有抽象方法;接口中的方法必须是抽象方法;
·抽象类中可以有普通的成员变量;接口中的变量必须是 static final 类型的,必须被初始化 , 接口中只有常量,没有变量。
·抽象类只能单继承,接口可以继承多个父接口;
·Java8 中接口中会有 default 方法,即方法可以被实现。
04.Java 和 C++ 的区别:
解析:虽然我们不太懂 C++,但是就是会这么问,尤其是三面(总监级别)面试中。
·都是面向对象的语言,都支持封装、继承和多态;
·指针:Java 不提供指针来直接访问内存,程序更加安全;
·继承: Java 的类是单继承的,C++ 支持多重继承; Java 通过一个类实现多个接口来实现 C++ 中的多重继承; Java 中类不可以多继承,但是!!!接口可以多继承;
·内存: Java 有自动内存管理机制,不需要程序员手动释放无用内存。
05. JDK 中常用的包有哪些?
java.lang、java.util、java.io、java.net、java.sql。
07. JDK,JRE 和 JVM 的联系和区别:
·JDK 是 java 开发工具包,是 java 开发环境的核心组件,并提供编译、调试和运行一个 java 程序所需要的所有工具,可执行文件和二进制文件,是一个平台特定的软件。
·JRE 是 java 运行时环境,是 JVM 的实施实现,提供了运行 java 程序的平台。JRE 包含了 JVM,但是不包含 java 编译器 / 调试器之类的开发工具。
·JVM 是 java 虚拟机,当我们运行一个程序时,JVM 负责将字节码转换为特定机器代码,JVM 提供了内存管理 / 垃圾回收和安全机制等。
这种独立于硬件和操作系统,正是 java 程序可以一次编写多处执行的原因。
区别:
·JDK 用于开发,JRE 用于运行 java 程序;
·JDK 和 JRE 中都包含 JVM;
·JVM 是 java 编程语言的核心并且具有平台独立性。
篇幅原因,需要详细答案的可以加Java校招资料QQ群:967051845
Java 中常见集合
1.说说常见的集合有哪些吧?
2.HashMap 和 Hashtable 的区别有哪些?(必问)
3.HashMap 的底层实现你知道吗?
4.ConcurrentHashMap 和 Hashtable 的区别? (必问)
5.HashMap 的长度为什么是 2 的幂次方?
6.List 和 Set 的区别是啥?
7.List、Set 和 Map 的初始容量和加载因子
8.Comparable 接口和 Comparator 接口有什么区别?
9.Java 集合的快速失败机制 “fail-fast”
高并发编程
在 Java 5.0 提供了 java.util.concurrent(简称 JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和轻量级任务框架。
1.多线程和单线程的区别和联系:
2.如何指定多个线程的执行顺序?
3.线程和进程的区别(必考)
4.多线程产生死锁的 4 个必要条件?
5.sleep( ) 和 wait( n)、wait( ) 的区别:
6.synchronized 关键字:
7.volatile 关键字
8.ThreadLocal(线程局部变量)关键字:
9.Atomic 关键字:
10.线程池有了解吗?(必考)
JVM 内存管理
既然是 Java 开发面试,那么对 JVM 的考察当然也是必须的,面试官一般会问你对 JVM 有了解吗?
我通常都会把我所了解的都说一遍,包括:JVM 内存划分、JVM 垃圾回收的含义,有哪些 GC 算法,年轻代和老年代各自的特点统统阐述一遍。
1.JVM 内存划分:
2.类似-Xms、-Xmn 这些参数的含义:
3.垃圾回收算法有哪些?
4.root 搜索算法中,哪些可以作为 root?
5.GC 什么时候开始?
6.内存泄漏和内存溢出
Java 8 相关知识
关于 Java8 中新知识点,面试官会让你说说 Java8 你了解多少,下边主要阐述我所了解,并且在面试中回答的 Java8 新增知识点。
0.1 HashMap 的底层实现有变化
1.JVM 内存管理方面,由元空间代替了永久代。
2.Lambda 表达式
3.函数式接口
4.引入重复注解
5.接口中可以实现方法 default 方法。
6.注解的使用场景拓宽
7.新的包 java.time 包
9道经典前端开发面试题及答案
1、什么是W3C标准?
WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如W3C DOM)、ECMAScript等。
2、bootstrap响应式原理
是通过栅格系统和媒体查询实现的 // 小屏幕(平板,大于等于 768px)@media (min-width: @screen-sm-min) { ... }// 中等屏幕(桌面显示器,大于等于 992px)@media (min-width: @screen-md-min) { ... }// 大屏幕(大桌面显示器,大于等于 1200...
3、HTML/XHTM的区别
XHTML 与 HTML 4.01 标准没有太多的不同。
XHTML 元素必须被正确地嵌套。
XHTML 元素必须被关闭。
标签名必须用小写字母。
XHTML 文档必须拥有根元素。
【如果大家对程序员,web前端感兴趣,想要学习的,关注一下小编吧。我是一名前端开发程序员,现在在网上授课教前端,每晚都会在群内免费直播。从最基础的HTML+CSS+JS到移动端HTML5到各种框架都有整理,送给每一位前端小伙伴,这里是小白聚集地,欢迎初学和进阶中的小伙伴。加群:731771211。前端学习必备公众号ID:mtbcxx】
4、页面构架和布局
布局可以是编码方面的,也可以是视觉方面的。
编码方面的涉及到语义化标签(也包含了div+css)布局、iframe框架(特殊地方使用)布局和表格布局(只用于一些特殊的地方,不推荐全站使用),具体你可以百度下了解学习下相关知识。
如果是视觉交互方面的,就比较多了,每年都会有新的设计布局,高级一点的比如视差类型布局,全屏布局,瀑布流,无缝拼图布局等,这些都不局限于传统的布局方式;传统电子商务、信息类的大多采用单栏、两栏或者三栏布局,还有更多栏布局;分辨率相关的宽屏布局和窄屏布局,感应式布局。太多的选择了,要学习的东西也比较多,要慢慢了解啦。还有更多的布局需要慢慢摸索和体验。我把我知道的说了。
至于手机端,例举一些:竖排列表、横排方块、九宫格、TAB切换式、手风琴布局(有多个分类及其内容同时展示)、抽屉/侧边栏、标签场景式),因为屏幕小,要增加用户体验都可以根据具体情况用不同的布局方式。
5、BootStrap学习笔记,优缺点总结
优点:
BT的优势之一就是可以根据用户屏幕尺寸调整页面,使其在各个尺寸上都表现良好。
BT预先定义了很多CSS类,使用的时候直接给class赋予对应的类名即可,如text-left,text-align,.table等。最有代表性的就是btn类,BT定义了一个.bt的基础类,如果还想要其他样式可以在这个基础类上进行扩展,实现不同的视觉效果。
BT的JavaScript插件非常丰富,既可以用现成的也可以自己扩充,BT提供了一个集成板的BT.js您可以直接拿过来使用也可以单个使用引入*.js即可。
不足:
对IE兼容也存在不小的问题,BT将所有的元素盒模型都设置成了border-Box,这是IE混杂模式下的盒模型,光这点就导致了不能兼容IE。此外还用到了大量的H5标签以及CSS3语法,这些语法标签兼容性方面同样存在不小的问题,当然网上存在很多兼容IE的办法,但需要引入其他文件,有些还不小,势必导致加载速度变慢,影响用户体验。
BT对IE6,7的兼容性肯定不好,对IE8的支持也需要一些额外的文件。
IE8的媒体查询需要response.js的配合才能实现
BT 不支持 IE 古老的兼容模式。为了让 IE 浏览器运行最新的渲染模式下,建议将此 标签加入到你的页面中:
按 F12 键打开 IE 的调试工具,就可以看到 IE 当前的渲染模式是什么。
BT属于前端UI库,可以快速搭建前端页面,以及设计响应式界面,还可以使用saas重新设计组件,
6、JQeury学习笔记,优缺点总结
优点:
jQuery实现脚本与页面的分离,是操作DOM的首选js库。
最少的代码做最多的事情
最少的代码做最多的事情,这是jQuery的口号,而且名副其实。使用它的高级selector,开发者只需编写几行代码就能实现令人惊奇的效果。开发者无需过于担忧浏览器差异,它除了还完全支持Ajax,而且拥有许多提高开发者编程效率的其它抽象概念。jQuery把JavaScript带到了一个更高的层次。以下是一个非常简单的示例:
代码如下:
$("p.neat").addClass("ohmy").show("slow");
通过以上简短的代码,开发者可以遍历“neat”类中所有的
元素,然后向其增加“ohmy”类,同时以动画效果缓缓显示每一个段落。开发者无需检查客户端浏览器类型,无需编写循环代码,无需编写复杂的动画函数,仅仅通过一行代码就能实现上述效果。
性能
在大型JavaScript框架中,jQuery对性能的理解最好。尽管不同版本拥有众多新功能,其最精简版本只有18KB大小,这个数字已经很难再减少。jQuery的每一个版本都有重大性能提高。
插件
基于jQuery开发的插件目前已经有大约数千个。开发者可使用插件来进行表单确认、图表种类、字段提示、动画、进度条等任务。
节省开发者学习时间
当然要想真正学习jQuery,开发者还是需要投入一点时间,尤其是如果你要编写大量代码或自主插件的话,更是如此。但是,开发者可以采取“各个击破”的方式,而且jQuery提供了大量示例代码,入门是一件非常容易的事情。
不足:
不能向后兼容
插件兼容性。
jQuery的稳定性
在大型框架中,jQuery核心代码库对动画和特效的支持相对较差。
7、”高内聚 ,低耦合“到底是什么意思?
‘高内聚,低耦合’是相对于代码而言,一个项目中:
每个模块之间相互联系的紧密程度,模块之间联系越紧密,则耦合性越高,模块的独立性就越差!反之同理;
一个模块中各个元素之间的联系的紧密程度,如果各个元素(语句、程序段)之间的联系程度越高,则内聚性越高,即‘高内聚’ !
如:一个项目中有20个方法调用良好,但是要修改了其中一个,另外的19个都要进行修改,这就是高耦合!独立性太差!
现在的软件结构设计,都会要求“高内聚,低耦合”,来保证软件的高质量!mark!
8、对前后端联合开发 的技术原理(Ajax、Json)有一定认识,理解DOM、Xml概念, 熟悉前后台交互方式。
Ajax异步交互原理:Ajax其核心有JavaScript、XMLHTTPRequest、DOM对象组成,通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用JavaScript来操作DOM而更新页面。
Json:一般我用的比较多的是通过AJAX异步来获取JSON数据。
DOM:文档对象模型,一个网页中所有的东西都是dom节点,根节点是,它可以无线嵌套。用来获取或设置文档中标签的属性,例如获取或者设置input表单的value值。
BOM:浏览器对象模型。用来获取或设置浏览器的属性、行为,例如:新建窗口、获取屏幕分辨率、浏览器版本号等。
XML:被设计用来传输和存储数据,被设计用来格式化和显示数据。仅仅是纯文本。
-前后台交互方式:
9、GET和POST请求的区别
GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在Http包的Body中.
GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.
做为一个过来人,我要告诉你请教前辈大牛真的很重要,可以让你少走很多的弯路,不要怕丢人,没面子,面子值几个钱?学到真本事才最重要。没有技能才叫真的没有面子。
这里推荐一下我的前端开发学习扣quN:767273102,里面都是学习前端的,从最基础的HTML+CSS+JS【炫酷特效,游戏,插件封装,设计模式】到移动端HTML5的项目实战的学习资料都有整理,送给每一位前端小伙伴,有想学习web前端的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入。
今天关于前端开发面试知识汇总-css篇和前端开发面试宝典的分享就到这里,希望大家有所收获,若想了解更多关于2017年秋季校招前端面经(百度,腾讯,网易,华为,乐视等) 前端面试笔试知识汇总1(含答案); 前端面试笔试知识汇总2(含答案);前端面试笔试知识汇总3(含答案);前端 2018 届校招笔试面经【百度,阿里,腾讯,阿里文娱,携程,美团,拼多多】、2018java 面试知识汇总、2020校招Java开发面试知识点解析(附最新笔面试题)、9道经典前端开发面试题及答案等相关知识,可以在本站进行查询。
本文标签: