记一次阿里电话面试| 技术征文

当天下午看到了招聘需求,就托人进行了内推,下班前收到邮件说会在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是否可以进行计算?可以

    扫描二维码关注公众号,回复: 2962203 查看本文章
  • 浏览器的内核、组成部分?

  • 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

猜你喜欢

转载自blog.csdn.net/qq_34926773/article/details/79714103