面试复习题 13道

1. 请写出一个符合 W3C 规范的 HTML 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>「我的页面」</title>
    <link rel="stylesheet" rel="text/css" href="./style.css">
    <link rel="stylesheet" href="./mobile.css" media="screen and (max-width:500px;)">
    <link rel="stylesheet" href="./print.css" media="print">
    <script src="./main.js"></script>
    <script src="./gbk.js" charset="GBK"></script>
</head>
<body>
    <svg width:"200" height:"200" xmlns="http://www.w3.org/2000/svg" version="1.1" >
        <circle cx="100" cy="100" r="50"  fill="red" />
    </svg> 
        
    
</body>
</html>

2. 移动端是怎么做适配的?

  1. 设置理想可视化窗口
    <meta name=”viewport” content=”width=device-width, initial-scale=1, maximum-scale=1″>

  2. 媒体查询
    如果设备满足媒体查询条件就生效
    link中css媒体查询

<link rel="stylesheet" media="(max-width: 800px)" href="example.css" >
样式表中的css媒体查询

<style>
@media (max-width: 600px) {
  .facet_sidebar {
    display: none;
  }
}
</style>
  1. 动态rem方案
    使用js动态调整rem
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<script>
    var pageWidth = window.innerWidth
    document.write('<style>html{font-size:'+ pageWidth/10 +'px;}</style>')
</script>

用scss转化语法

@function px( $px ){
  @return $px/$designWidth*10 + rem;
}

$designWidth : 640; // 640 是设计稿的宽度,你要根据设计稿的宽度填写。设计师的设计稿宽度需要统一

.child{
  width: px(320);
  height: px(160);
  margin: px(40) px(40);
  border: 1px solid red;
  float: left;
  font-size: 1.2em;
}

3. 用过CSS3吗? 实现圆角矩形和阴影怎么做?

通过·border-radius·属性制作,例:
border-radius:6px
border-radius有四个属性

border-top-left-radius
border-top-right-radius
border-botton-righ-radius
border-botton-left-radius

通过border-shadow设置,例:
box-shadow: inset 2px 2px 2px 1px red;
会生成一个在边框内,水平、竖直偏移量均为 2px,模糊半径为 2px,同时阴影会扩大 1px 的红色阴影。

4.什么是闭包,闭包的用途是什么?

闭包

var a=1

function f4(){
    console.log(a)//2}

如果一个函数使用了他范围外的变量,那么(这个函数+这个变量) 就叫做闭包,
闭包的用途

  1. 模仿块级作用域
  2. 存储变量
  3. 封装私有变量

5. call、apply、bind 的用法分别是什么?

function x(a,b){
    console.log(a+b)
    console.log(this.a + this.b)
}
var obj = {a:1,b:2}
x.call(obj,3,4) // 7 3
x.apply(obj,[3,4])  // 7 3
var foo = x.bind(obj,3,4)
foo()   // 7 3

call()、apply()、bind()都可以通过传入第一个参数改变this对象的指向。 call()的arguments传入具体参数,apply()的arguments传入包裹着参数的数组,bind()的arguments传入具体参数。 call()、apply()是立即调用,bind()的返回值是传给一个变量,可以稍后调用。

6.常见的HTTP状态码

  • 200 OK
    请求正常处理完毕
  • 204 No Content
    请求成功处理,没有实体的主体返回
  • 206 Partial Content
    GET范围请求已成功处理
  • 301 Moved Permanently
    永久重定向,资源已永久分配新URI
  • 302 Found
    临时重定向,资源已临时分配新URI
  • 303 See Other
    临时重定向,期望使用GET定向获取
  • 304 Not Modified
    未修改
  • 307 Temporary Redirect
    临时重定向,POST不会变成GET
  • 400 Bad Request
    请求报文语法错误或参数错误
  • 401 Unauthorized
    未授权
  • 403 Forbidden
    禁止访问
  • 404 未发现指定网址
    无法找到请求资源(服务器无理由拒绝)
  • 500 Internal Server Error
    服务器发生错误
  • 503 Service Unavailable
    服务器超负载或停机维护

7.请写出一个 HTTP post 请求的内容,包括四部分。

其中
第四部分的内容是 username=ff&password=123
第二部分必须含有 Content-Type 字段
请求的路径为 /path

POST /path HTTP/1.1
Host: localhost:8081
User-Agent: curl/7.54.0
Accept: */*
no1harm: xxx
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

username=ff&password=123

8.请说出至少三种排序的思路,这三种排序的时间复杂度分别为

  1. O(n*n)
  2. O(n log2 n)
  3. O(n + max)
  1. 冒泡排序
    比较相邻的数字第一个比第二个大就交换位置,对每队相邻的数组重复此操作,从第一队到最后一队,这一步让会让最后一个数字变成最大的,重复此操作,直到没有任何数字可以进行对比
  2. 快速排序
    以一个元素为基准,大的放右边,小的放左边,然后左右重复此操作,直到只有一个数字为止
  3. 基数排序
    将所有待比较的数值统一为同样数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序数列。

9.一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?

  • 客户端进行DNS解析,把域名转换为IP
  • 进行TCP连接(三次握手)客户端我要连接你了,你准备好了吗? 服务端:我准备好了,你可以连接了。客户端:那我开始连接你了
  • 浏览器通过TCP协议对指定端口发起请求报文,请求报文包括请求方法、请求路径、HTTP协议、请求报头等。
  • 服务端接受请求报文,开始分析处理,查询服务器内是否存在路径和文件,返回响应报文;如果不存在此路径,返回响应报文,状态码404等消息;如果有,则发送响应报文,包括HTTP协议、状态码200、响应报头、响应内容等;
  • 浏览器接收内容,并把它渲染到页面上,页面加载完成

10.著名面试题:如何实现数组去重?

假设有数组 array = [1,5,2,3,4,2,3,1,3,4]
你要写一个函数 unique,使得
unique(array) 的值为 [1,5,2,3,4]
也就是把重复的值都去掉,只保留不重复的值。

要求:

  1. 不要做多重循环,只能遍历一次
  2. 请给出两种方案,一种能在 ES 5 环境中运行,一种能在 ES 6 环境中运行
    ES5
var array = [1,5,2,3,4,2,3,1,3,4]
function unique(array){
    var n=[]
    for(vari= ;i<array.lenght;i++){
    if(n.indexOf(arry[i]) == -1){
    n.push(array[i])
}}return n;
}
unique(array)

ES6

var array = [1,5,2,3,4,2,3,1,3,4]

function unique(array){
     return [...new Set(array)];
}
console.log(unique(array))
//一遍
var array = [1,5,2,3,4,2,3,1,3,4]

function unique(array){
    var res = array.filter(function(item, index, array){
        return array.indexOf(item) === index;
    })return res
}
console.log(array)

11.请问JSONP为什么不支持POST请求

因为JSONP是通过动态创建script实现的
动态创建script只能用GET请求,没办法用POST请求

12. JS和JSON又什么区别

这是两门语言

13.请手写一个AJAX

myButton.addEventListener('click', (e)=>{
    let request = new XMLHttpRequest()
    request.open('GET','/xxx')//配置request
    request.send()
    request.onreadystatechange = ()=>{
        if(request.readyState === 4){
            if(request.status >= 200 && request.status<300){
                let string = request.responseText
                let object = window.JSON.parse(string)
            }
        }
    }
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 最近在简书上看到一篇大牛@J_Knight写的面试题, 发现好多知识点都比较模糊,所有就去各种找答案总结一下,记录...
    洱马阅读 700评论 0 12
  • Redis面试题汇总 使用Redis的好处? key-value 形式的内存数据库。 数据访问在内存中,访问速度快...
    Catcher07阅读 280评论 0 1
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,465评论 1 45
  • 前言:本文会罗列出十道比较基础的题目,我个人作为刚入门的初级前端,写这篇文章正好可以总结汇总一下近期的知识,看到这...
    EnochQin阅读 3,118评论 0 9
  • Vuex:是一个集中式状态管理工具,相当于react中的 redux 1) 主要解决的问题:大中型项目中复杂组...
    何海洋_847e阅读 219评论 0 0