当天下午看到了招聘需求,就托人进行了内推,下班前收到邮件说会在7个工作日内联系进行面试。没想到在回家路上就接到了阿里面试官的电话,说要进行电话面试。由于当时在外面,不太方便,就告诉面试官10分钟后回到家进行面试,面试官答应了,感谢面试官。 10分钟面试正式开始,其实我已经戴好耳机准备好了,哈哈。
自我介绍,简单聊聊过往项目用到了那些技术,有哪些技术难点,是如何解决的?
var和let、const的区别,为什么会产生这种区别?
var作为ES5中定义变量的方式,会存在变量提升的问题,作用域也不明晰。ES6引进了let和const。let用来定义变量,const用来定义常量,必须先定义后使用,不存在变量提升的问题。如何实现一个块在浏览器中上下左右垂直居中?有几种方式?
(1)绝对定位
.parent{
position:relative;
}
.child{
position:absolute;
top:50%;
left:50%;
width:200px;
height:200;
margin-left:-100px;
margin-top:-100px;
}
(2)同样定位
.parent{
position:relative;
}
.child{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
}
(3)定位
.parent{
position:relative;
}
.child{
position:absolute;
top:0;
left:0;
bottom:0;
right:0;
margin:auto;
}
(4)当要被居中的元素是inline或者inline-block元素
.parent{
display:table-cell;
text-align:center;
vertical-align:middle;
}
(5)flex布局
.parent{
display:flex;
justify-content:center;
align-items: center;
}
- 你是如何看待模块化的?cmd和amd的区别?除了amd和cmd还有哪些加载方式?node加载模块的方式?commonJs?ES6的加载方式。
答:1、AMD推崇依赖前置,在定义模块的时候就要声明其依赖的模块 2、CMD推崇就近依赖,只有在用到某个模块的时候再去require 这种区别各有优劣,只是语法上的差距,而且requireJS和SeaJS都支持对方的写法.AMD和CMD最大的区别是对依赖模块的执行时机处理不同,注意不是加载的时机或者方式不同。都是异步加载。详细的解释从网上找了一篇文章谈谈模块化的理解 - 浏览器地址栏输入网址后会发生什么?具体的流程有哪些?
答:- 1.浏览器会开启一个线程来处理这个请求,对 URL 分析判断如果是 http 协议就按照 Web 方式来处理;
- 2.调用浏览器内核中的对应方法,比如 WebView 中的 loadUrl 方法;
- 3.通过DNS解析获取网址的IP地址,设置 UA 等信息发出第二个GET请求;
- 4.进行HTTP协议会话,客户端发送报头(请求报头);
- 5.进入到web服务器上的 Web Server,如 Apache、Tomcat、Node.JS 等服务器;
- 6.进入部署好的后端应用,如 PHP、Java、JavaScript、Python 等,找到对应的请求处理;
- 7.处理结束回馈报头,此处如果浏览器访问过,缓存上有对应资源,会与服务器最后修改时间对比,一致则返回304;
- 8.浏览器开始下载html文档(响应报头,状态码200),同时使用缓存;
- 9.文档树建立,根据标记请求所需指定MIME类型的文件(比如css、js),同时设置了cookie;
- 10.页面开始渲染DOM,JS根据DOM API操作DOM,执行事件绑定等,页面显示完成。
另外也可以这样回答:
浏览器根据请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求;服务器交给后台处理完成后返回数据,浏览器接收文件(HTML、JS、CSS、图象等);浏览器对加载到的资源(HTML、JS、CSS等)进行语法解析,建立相应的内部数据结构(如HTML的DOM);载入解析到的资源文件,渲染页面,完成。
grunt、gulp、webpack的区别及优点和缺点
less是否可以进行计算?可以
浏览器的内核、组成部分?
Git中reset和rebase的区别?
Git常用的命令,回撤的命令是哪个? git revert commitID,rebase合并提交历史,reset撤销最近提交。常见的浏览器兼容方式有哪些?遇到过哪些兼容问题?
变量的提升?函数声明和函数表达式的区别
//函数声明
function A(){
....
}
//函数表达式
var change=function(){
...
}
- flex的深层原理?兼容方式有哪些?
- 跨域问题的解决方式,原理?
(1)CORS,需要服务器设置header:Access-Control-Allow-Origin
(2)jsonp,需要目标服务器配合一个callback函数
(3)postMessage+iframe,需要目标服务器或者目标页面写一个postMessage,主要侧重于前端通讯。
(4)nginx反向代理,需要搭建一个Nginx服务器,用于转发请求。
(5)window.name+iframe,需要目标服务器响应window.name
(6)window.location.hash+iframe同样需要目标服务器处理。
好多问题记不太清了,来来回回的聊了一个小时左右,第一次电话面试居然这么久,面试官辛苦了,面试完都晚上八点多了
原文链接:https://juejin.im/post/5ab4feabf265da239a5fc002