面试题(4)

面试前的准备工作

  • 简历一定要写好

  • 先想清楚你辞职想去的下一家的初衷是什么,是加薪资、提升技术 or 换个工作环境

  • 准备工作要做好。

  • 规划好你自己的面试时间,提前要面试的公司做个简单的背景了解。公司的面试流程一般是笔试 or 电话面试 (可无) —> 技术面(1-2轮) —> HR面 。

知识点

1.HTML以及CSS篇,集中在CSS

说下你常用的几种布局方式,集中往盒模型、flex布局说(至于grid布局,这个我没看过)

固定布局:宽度,高度固定,页面被一个固定网页包裹,容器不能移动

流式布局:以百分比为主要形式,让屏幕自适应,这种布局方式定义灵活

弹性布局(flex布局):pc端并不推荐使用,ie9以下浏览器均不支持,移动端比较常用

浮动布局(float):可以设置left或者right,他使元素脱离文档流进而达到布局的目的(使用浮动的结束以后,别忘记清除浮动哦)

定位布局: position: fixed;固定布局,将元素固定在一个位置,不随页面移动而移动;position: relative;相对定位,相对于元素自身定位,不脱离文档流,相当于定义一个参照物,一般和绝对定位结合使用;position: absolute;绝对定位,脱离文档流,一般和相对定位结合使用,如果不定义相对定义,将会相对于整个浏览器定位

margin和padding :margin是外边距,padding内边距,外边距是盒子与盒子之间的距离,内边距是盒子的边和盒子内部元素的距离

2. 实现水平居中的几种方法

行内元素:text-align:center;

确定宽度的块级元素:

(1)margin和width实现水平居中  (margin:0 auto)  

(2)绝对定位和margin-left: -(宽度值/2)实现水平居中

  • 固定宽度块级元素水平居中,通过使用绝对定位,以及设置元素margin-left为其宽度的一半
.content{

width:200px;
position:absolute;
left:50%;
margin-left:-(200/2);//元素宽度的一半
}

 

 (3)position:absolute + (left=0+top=0+right=0+bottom=0) + margin:auto

//例如:
.content{

position: absolute;

width: 200px;

top: 0;

right: 0;

bottom: 0;

left: 0;

margin: auto;

}

对于未知宽度的块级元素

(1)table标签配合margin左右auto实现水平居中

  • 使用table标签(或直接将块级元素设值为display:table),再通过给该标签添加左右 margin:auto

(2)inline-block实现水平居中方法

绝对定位实现水平居中

绝对定位+transform,translateX可以移动本省元素的50%

.content{
position:absolute;
left:50%;
top:50%;
transform:translate(-50%,-50%);
}

 相对定位实现水平居中

  • 用float或者display把父元素变成行内块状元素
.content{
display: inline-block; /* 把父元素转化为行内块状元素 */
/*float: left; 把父元素转化为行内块状元素 */
position: relative;
left: 50%;
}
/*目标元素*/
.con{
position: relative;
right: 50%;
}

 CSS3的flex实现水平居中方法

/*法一*/
.content{
display: flex;
flex-direction: column;
}
.content .con{
align-self:center;
}

/*法二*/
.content{
display:flex;
}
.content .con{
margin:auto;
}

CSS3的fit-content配合左右margin为auto实现水平居中 

.content{
width: fit-content;
margin-left: auto;
margin-right: auto;
}

 

 3.animate和translate有没有用过,一些常见的属性说下?

  • Animation字面的意思就是“动画”  属性:animation: name(绑定到选择器的 keyframe 名称) duration(延长的时间) timing-function(动画的速度曲线:linear(速度相同)  ease(先低速后加速)  ease-in (低速开始) ease-out (低速结束) ease-in-out  (低速开始和结束) cubic-bezier(n,n,n,n)(从 0 到 1 的数值)) delay(动画开始前的延迟)  iteration-count (播放的次数(n(播放次数)|infinite(无限循环)))direction (是否循环播放(normal(正常播放)|alternate(轮流反向播放)))fill-mode play-state;
  • 例子:animation:marginLeft 10s linear 2s infinite 100 reverse  paused(姓名、时间、速度曲线、动画开始的延迟、播放次数、播放方式)
  • translate
  • transform:translate(位移) 、scale(缩放)、rotate(旋转)、skew(倾斜转换)、perspective(透视视图)

4.CSS实现宽度自适应100%,宽高16:9的比例的矩形

比如width:100%;

       height:100% * 9/16 =56.25%;

//css
*{
margin:0;
padding:0;

}

//外层,包裹矩形的div,用来控制矩形大小

.big{
    width:20%;
}
//矩形
.box{
  width:100%;
  height:0;
  padding-bottom:65.25%;
  position:relative;
  background:pink;
}
//矩形的内容
.box p{
   width:100%;
   height:100%;
   position:absolute;
   color:#333;
}


//html
<div class="big">
    <div class="box">
        <p>矩形</p>
    </div>
</div>

 5.如何实现左边两栏一定比例,左栏高度随右栏高度自适应?

//css
.con{
    width:900px;
    height:100%;
    overflow:hidden;
    margin:0 auto;
}
.left{
    height:100%;
    width:200px;
    overflow:hidden;
    background:#ff5;
    word-break:break-all;
    padding-bottom:9999px;
    margin-bottom:-9999px;
    float:left;
}
.right{
    width:100px;
    float:left;
    height:auto;
    background:#f5f;
    word-break:break-all;
}

//html

<div class="con">
    <div class="left">123</div>
    <div class="right">gfkjqouewgshjcgsdahjdhkeyfjbqewfjegfjewqjfregfnmqewhfcureqbcferfge</div>
</div>

2.JavaScript篇

  • 变量提升遇到的一些简单code题

  • 说一下对闭包的理解,以及你在什么场景下会用到闭包?

  • 说一下你对原型与原型链的了解度,有几种方式可以实现继承,用原型实现继承有什么缺点,怎么解决?

  • iframe的缺点有哪些?

  • Ajax的原生写法

  • 为什么会有同源策略?

  • 前端处理跨域有没有遇到过,处理跨域的方式有哪几种方式去解决

  • 怎么判断两个对象是否相等

  • 代码实现一个对象的深拷贝

  • 从发送一个url地址到返回页面,中间发生了什么

  • 说下工作中你做过的一些性能优化处理

3.ES6篇

  • 箭头函数中的this指向谁?

  • 如何实现一个promise,promise的原理,以及它的两个参数是什么?

  • promise中第二个参数的reject中执行的方法和promise.catch()都是失败执行的,分别这么写有什么区别,什么情况下会两个都同时用到?

  • map和set有没有用过,如何实现一个数组去重,map数据结构有什么优点?

4.计算机网络篇

  • http、https、以及websocket的区别

  • http常见的状态码,400,401,403状态码分别代表什么?

  • 协商缓存和强缓存的区别

  • 说下计算机网络的相关协议?

5.浏览器兼容性问题

主要是兼容IE8以上以及其他各个浏览器

  • 使用meta标签来调节浏览器的渲染方式,告诉浏览器用哪种内核渲染,360双核浏览器就是在ie和chrome之间来回切换,现在使用meta标签来强制使用最新的内核渲染页面

    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

     

  • rgba不支持IE8 解决:用opacity

  • CSS3前缀

  • -webkit- webkit渲染引擎 chrome/safari
    -moz gecko引擎  firefox
    -ms- trident渲染引擎 IE
    -o-  opeck渲染引擎 opera

     

  • background-size不支持IE8,可以用img

  • 使用PIE.htc让IE6/7/8支持CSS3部分属性,像CSS3的border-radius,box-shadow,css backgrounds(-pie-background),Gradients,RGBA属性

  • .border-radius {
    border-radius: 10px;
    -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
    background: #abcdef;
    behavior: url(css/PIE.htc);
    }

     

  • 过渡不兼容IE8,可以用JS动画实现

参考文章:

https://www.w3cplus.com/css/elements-horizontally-center-with-css.html

http://blog.sina.com.cn/s/blog_c112a2980102xt3y.html

https://blog.youkuaiyun.com/dengdongxia/article/details/80297116

https://segmentfault.com/a/1190000014730597

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值