前端面试问题汇总

面试技术问题:

  1. Null 与 undefined区别?

l   NULL的类型是object;undefined的类型是undefined类型,一个变量如果没有初始化的话就是undefined。

l   null 表示此处数值为空,undefined表示此处应该有值,但是确缺少值。null转为数字是0,undefined转为数字是NaN

l   null的典型用法是作为一个空的对象,就像是一个占位符。在dom模型中获取一个不存在的元素,会得到一个null

l   undefined的用法,访问不存在的对象属性或者数组项的时候会返回undefined,void操作符也返回一个undefined

  1. Position的值有哪些?原点在哪里?

position的值有5个:

 

原点位置:

relative(相对定位):定位原点是元素原始位置;是通过设置垂直或水平位置,让这个元素"相对于"它的原始起点进行移动。

absolute(绝对定位):定位原点是离自己这一级元素最近的一级position设置为absolute或者relative的父元素的左上角为原点的。默认参照浏览器的左上角,配合TOP、RIGHT、BOTTOM、LEFT(下面简称TRBL)进行定位,有以下属性:

1)如果没有TRBL,以父级的左上角,在没有父级的时候,他是参照浏览器左上角,如果在没有父级元素的情况下,存在文本,则以它前面的最后一个文字的右上角为原点进行定位但是不断开文字,覆盖于上方。

2)如果设定TRBL,并且父级没有设定position 属性,那么当前的absolute 则以浏览器左上角为原始点进行定位,位置将由TRBL 决定。

3)如果设定TRBL,并且父级设定position 属性(无论是absolute 还是relative),则以父级的左上角为原点进行定位,位置由TRBL 决定。即使父级有Padding 属性,对其也不起作用,说简单点就是:它只坚持一点,就以父级左上角为原点进行定位,父级的padding对其根本没有影响。

    以上三点可以总结出,若想把一个定位属性为absolute 的元素定位于其父级元素内,只有满足两个条件,只要有一点不满足,元素就会以浏览器左上角为原点。

第一:设定TRBL

第二:父级设定Position 属性

  1. 对this的理解?

this永远指向函数运行时所在的对象,而不是函数被创建时所在的对象。匿名函数或不处于任何对象中的函数指向window 。

1.如果是call,apply, with,指定的this是谁,就是谁。

2.普通的函数调用,函数被谁调用,this就是谁。

  1. 与普通函数相比,构造函数有以下明显特点:

1.new关键字调用

    var prince=new Prince("charming",25);

2.函数内部可以使用this关键字
在构造函数内部,this指向的是构造出的新对象。用this定义的变量或函数/方法,就是实例变量或实例函数/方法。需要用实例才能访问到,不能用类型名访问。

   prince.age;//25
    Prince.age;//undefined

3.默认不用return返回值
构造函数是不需要用return显式返回值的,默认会返回this,也就是新的实例对象。当然,也可以用return语句,返回值会根据return值的类型而有所不同,细节将在下文介绍。

4.函数命名建议首字母大写,与普通函数区分开。
不是命名规范中的,但是建议这么写。

  1. Display的值有哪些?

 

  1. HTML5新加的特性有哪些?

l   不再基于SGML,只用<!DOCTYPE html>就够了。

l   新增内容元素,比如 article、footer、header、nav、section 、time等。

l   用于媒介回放的 video 和 audio 元素 

l   input新type:date、email、url等。

l   新增一些使用API,比如geolocation等。其中需使用getCurrentPosition方法。

兼容性情况: 针对浏览器的支持(除了IE6/IE7/IE8/IE9以为,其他的大部分主流的浏览器都是完美兼容的)

  1. cookie与session区别?

Session和Cookie都是为了解决HTTP协议无状态的问题,为了标识一次回话,记录一些用户信息。

    session是服务器端存储的用户信息,通过session_id来标识。

cookie也是用与保存用户的一些信息,例如加入购物车的商品信息,浏览的一些选择。cookie以键值对的形式保存这些信息,其中也包括session_id,并且随着每次请求传送到服务器端。

cookie的内容包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。

https://juejin.im/entry/5766c29d6be3ff006a31b84e

  1. cookie、localStorage、sessionStorage的区别?

localStorage - 没有时间限制的数据存储

sessionStorage - 针对一个 session 的数据存储

l   共同点:sessionStorage、localStorage和cookie都由浏览器存储在本地的数据。

l   区别:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,localStorage和sessionStorage仅保存在客户端,不与服务器进行交互通信。

l   cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据。sessionStorage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。

l   存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。localStorage 和sessionStorage,但比cookie大得多,可以达到5M或更大。

l   localStorage支持事件通知机制,可以将数据更新的通知发送给监听者。 api 接口使用更方便。而cookie的原生接口不友好,需要程序员自己封装

l   作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。

l   应用场景:localStoragese:常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据。sessionStorage:敏感账号一次性登录;

localStorage提供了几个方法:
1.存储:localStorage.setItem(key,value)如果key存在时,更新value
2.获取 localStorage.getItem(key)如果key不存在返回null
3.删除 localStorage.removeItem(key)一旦删除,key对应的数据将会全部删除
4.全部清除 localStorage.clear() 使用removeItem逐个删除太麻烦,可以使用clear,执行的后果是会清除所有localStorage对象保存的数据。

  1. get与post区别?

get:1、提交的键值对,放在地址栏URL后面

   2、安全性差

   3、对提交内容长度有限制

   4、GET幂等,POST不幂等,幂等是指同一个请求方法执行多次和仅执行一次的效果完全相同。

   5、GET用于从服务器端获取数据,包括静态资源(HTML|JS|CSS|Image等等)、动态数据展示(列表数据、详情数据等等)。

post:1、安全性相对较高

2、对提交内容长度无限制

3、POST用于向服务器提交数据,比如增删改数据,提交一个表单新建一个用户、或修改一个用户等。

  1. 对js继承的理解?

由于所有的实例对象共享同一个prototype对象,那么从外界看起来,prototype对象就好像是实例对象的原型,而实例对象则好像"继承"了prototype对象一样。

 

  1. 对闭包的理解?

闭包是指有权访问另一个函数作用域中的变量的函数。 创建闭包的常用方式,就是在一个函数内部创建另一个函数。

闭包最大用处有两个:1、可以访问其他函数内部的变量;2、让这些变量的值始终保存在内存中。

创建的内部函数可以访问外部函数中声明的所有局部变量、参数和其他内部函数,当该内部函数在外部函数外被调用,就生成了闭包。

内部环境可以通过作用链访问所有的外部环境,但外部环境不能访问内部环境中的任何变量和函数。这些环境直接的联系是线性,有次序的,每个环境都可以向上搜索作用域链,以查询变量和函数名;但任何环境都不能通过向下搜索作用域链而进入另一个执行环境。

 

 

  1. css选择器有哪些?

 

 

  1. 对ajax的理解?跨域问题?

Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。

      Ajax可以实现动态不刷新(局部刷新),就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作

优点:1. 通过异步模式,提升了用户体验

      2. 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用。

      3. Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。

跨域问题:AJAX出现跨域问题,是因为浏览器的“同源策略” ,所谓“同源策略”,就是指:协议、域名、端口相同。

跨域问题解决方案:

1JSONP    比较常用,比较简单,实现方式是:在请求查询字符串加一个callback函数。只能发送get请求。

2CORS     AJAX跨域的根本解决办法,CORS允许发送任何类型的请求,对跨域的解决,关键的服务器。实现方式是:在头部信息中,加origin字段,举例:origin=*

  1. 请解释JSONP的工作原理,以及它为什么不是真正的AJAX?

JSONP (JSON with Padding)是一个简单高效的跨域方式,HTML中的script标签可以加载并执行其他域的javascript,于是我们可以通过script标记来动态加载其他域的资源。例如我要从域A的页面pageA加载域B的数据,那么在域B的页面pageB中我以JavaScript的形式声明pageA需要的数据,然后在 pageA中用script标签把pageB加载进来,那么pageB中的脚本就会得以执行。JSONP在此基础上加入了回调函数,pageB加载完之后会执行pageA中定义的函数,所需要的数据会以参数的形式传递给该函数。JSONP易于实现,但是也会存在一些安全隐患,如果第三方的脚本随意地执行,那么它就可以篡改页面内容,截获敏感数据。但是在受信任的双方传递数据,JSONP是非常合适的选择。

AJAX是不跨域的,而JSONP是一个跨域的,还有就是二者接收参数形式不一样!

  1. 请指出document.onload和document.ready两个事件的区别。

页面加载完成有两种事件,一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件),二是onload,指示页面包含图片等文件在内的所有元素都加载完成。

  1. 什么是三元表达式?“三元”表示什么意思?

在表达式boolean-exp ? value0 : value1 中,如果“布尔表达式”的结果为true,就计算“value0”,而且这个计算结果也就是操作符最终产生的值。如果“布尔表达式”的结果为false,就计算“value1”,同样,它的结果也就成为了操作符最终产生的值。

  1. 介绍一下你对浏览器内核的理解?
  • 主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎。
  • 渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。
  •  JS引擎则解析和执行javascript来实现网页的动态效果。
  • 最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。

常见的浏览器内核有哪些?

Trident内核:IE,360,搜过浏览器;

Gecko内核:Netscape6及以上版本,

Presto内核:Opera

Blink内核:Opera;

Webkit内核:Safari,Chrome

  1. 简述一下你对HTML语义化的理解?
1.    用正确的标签做正确的事情。
2.    html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;
3.    即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的;
4.    搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO;
5.    使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。
  1. HTML标题字数过多,如何实现隐藏?
  2. HTTP与HTTPs的区别?
  3. 状态码201、401、441含义?

 


 

面试常规问题

  1. 自我介绍
  2. 为什么选择前端
  3. 你的职业规划是什么?
  4. 有什么问题需要问公司的?

<持续更新......>

转载于:https://www.cnblogs.com/yadiblogs/p/8541664.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习修炼(八)——经典卷积网络

文章目录8 经典卷积网络8.1 LeNet模型8.2 Alexnet8.3 VGG8.4 ResNet8.5 感受野8 经典卷积网络 在前面一讲&#xff0c;我们谈论了关于卷积神经网络的诸多细节。综合来讲&#xff0c;卷积神经网络就是含卷积层的网络。在本讲中&#xff0c;我们将会根据卷积神经网络发展的历史&…

Lua语法基础(1)---简介、基本数据类型、表达式

我觉得我已经陷入了一个坑内。因为&#xff0c;安装了Lua和SublimeText3编辑器之后&#xff0c;怎么使自己编写的lua代码在untiy内运行起来&#xff0c;是个我完全不了解的机制。先放一放吧。首先&#xff0c;来回顾一下Lua的语法基础。 第一 起点 在Lua中具有一个Chunks的概念…

视觉中的经典图像特征小结(一): 颜色直方图, HOG, LBP

[普兒原创, 如有错误和纰漏欢迎指正. 更新中...] 1. 颜色直方图 颜色空间在本质上是定义在某种坐标系统下的子空间&#xff0c;空间中的每一个坐标表示一种不同的颜色。颜色空间的目的在于给出某种颜色标准&#xff0c;使得不同的设备和用途都能对颜色有一致的描述。这里主要介…

C++从0到1的入门级教学(七)——指针

文章目录7 指针7.1 指针的基本概念7.2 指针变量的定义和使用7.3 指针所占内存空间7.4 空指针7.5 野指针7.6 void*指针7.7 指向指针的指针7.8 const修饰指针7.9 指针和数组7.10 指针和函数7 指针 指针是指向另外一种类型的符合类型&#xff0c;和引用类似&#xff0c;指针也实现…

urllib库的使用

#使用urllib库&#xff0c;将langlang2017全站网页请求并保存 #1、引入模块 from urllib import request from urllib import error#2、操作 #&#xff08;1&#xff09;创建url base_url "http://www.langlang2017.com/route.html"try:# &#xff08;2&#xff09;…

一个显示日期的工具类

一个显示日期的工具类 .h文件 #import <Foundation/Foundation.h>interface TimeUtil : NSObject (NSString*)getTimeStr1:(long long)time;(NSString*) getTimeStrStyle1:(long long)time;(NSString*)getTimeStr1Short:(long long)time;(NSString*) getTimeStrStyle2:(l…

【leetcode】Median of Two Sorted Arrays

题目简述&#xff1a; There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (mn)). 解题思路&#xff1a; 这本身是个很简单的题目&#xff0c;但是题目要求他的复…

C++从0到1的入门级教学(五)——字符串、向量和数组

文章目录5 字符串、向量和数组5.1 命名空间5.2 标准库string5.2.1 定义和初始化string对象5.2.2 string对象上的操作5.2.2.1 读取string对象5.2.2.2 风格5.2.2.3 使用getline读取一整行5.2.2.4 empty和size操作5.2.2.5 size_type类型5.2.2.6 比较string对象5.2.2.7 string对象的…

媒体格式分析之flv -- 基于FFMPEG

本来是应该先写一个媒体文件格式的简单讲解的&#xff0c;还没来得及写&#xff0c;以后再写。今天就先根据ffmpeg的flv.c的flv_demux这个结构体来讲解一下当前比较流行的媒体格式flv. FLV 是FLASH VIDEO的简称&#xff0c;FLV流媒体格式是随着Flash MX的推出发展而来的视频格式…

Linux命令整合之find

描述Linux下find命令在目录结构中搜索文件&#xff0c;并执行指定的操作。用法find 路径 -命令参数 [输出形式]参数说明路径&#xff1a;告诉find在哪儿去找你要的东西&#xff0c;命令参数&#xff1a;参数很多下面会说到输出形式&#xff1a;输出形式很多&#xff0c;-print,…

[HEOI2015]兔子与樱花

题目描述 很久很久之前&#xff0c;森林里住着一群兔子。有一天&#xff0c;兔子们突然决定要去看樱花。兔子们所在森林里的樱花树很特殊。樱花树由n个树枝分叉点组成&#xff0c;编号从0到n-1&#xff0c;这n个分叉点由n-1个树枝连接&#xff0c;我们可以把它看成一个有根树结…

C++从0到1的入门级教学(三)——表达式和运算符

文章目录3 运算符3.1 表达式3.1.1 基本概念3.1.2 运算符和运算对象3.1.3 运算对象的转换3.1.4 左值和右值3.2 运算符3.2.1 算术运算符3.2.2 赋值运算符3.2.3 比较运算符3.2.4 逻辑运算符3.2.5 成员访问运算符3.2.6 条件运算符3 运算符 C提供了一套供操作内置数据类型的运算符&…

谈谈用SQLite和FMDB而不用Core Data

谈谈用SQLite和FMDB而不用Core Data 发布于&#xff1a;2014-04-22 11:22阅读数&#xff1a;4235 凭良心讲&#xff0c;我不能告诉你不去使用Core Data。它不错&#xff0c;而且也在变好&#xff0c;并且它被很多其他Cocoa开发者所理解&#xff0c;当有新人加入你的组或者需要别…

Idea工具开发 SpringBoot整合JSP(毕设亲测可用)

因为&#xff0c;临近毕业了&#xff0c;自己虽然也学了很多框架。但是&#xff0c;都是在别人搭建好的基础上进行项目开发。但是springboot的官方文档上明确指出不提倡使用jsp进行前端开发&#xff0c;但是在校期间只学了jsp作为前端页面。所以&#xff0c;废话不多说&#xf…

深度学习番外——Yolov5服务器环境搭建

文章目录1 服务器搭建yolov5环境1.1 创建环境1.2 跟随官方指引2 下载预训练权重3 推理4 测试1 服务器搭建yolov5环境 1.1 创建环境 首先先的在本地环境下搭建一个我们的环境&#xff0c;名字设为yolo5-6 conda create -n yolov5-6 python3.7#创建环境 conda activate yolov5…

计算球体积

Problem Description 根据输入的半径值&#xff0c;计算球的体积。Input 输入数据有多组&#xff0c;每组占一行&#xff0c;每行包括一个实数&#xff0c;表示球的半径。Output 输出对应的球的体积&#xff0c;对于每组输入数据&#xff0c;输出一行&#xff0c;计算结果保留三…

机器学习实战(一)——员工离职预测

文章目录员工离职预测——逻辑回归的应用1 读取文件2 独热编码3 划分数据集4 归一化5 逻辑回归预测6 模型预测及评估员工离职预测——逻辑回归的应用 开始这个案例之前&#xff0c;请先点击这里的数据集进行下载&#xff1a;HR_comma_sep.zip - 蓝奏云 (lanzout.com) 1 读取文…

Mac版Anaconda安装Tweepy包

Anaconda官网给出的tweepy包安装方法&#xff1a;https://anaconda.org/conda-forge/tweepy 查阅Anaconda官方文档&#xff0c;可以通过以下控制台命令安装Tweepy包。 conda install -c conda-forge tweepy 在控制台执行后&#xff0c;系统可能会提示未找到conda指令&#xff…

iOS 证书与签名 解惑详解

iOS 证书与签名 解惑详解 分类&#xff1a; iPhone2012-06-06 19:57 9426人阅读 评论(1) 收藏 举报iosxcodecryptographyappleiphone测试目录(?)[] 教程截图&#xff1a; 下面是一篇有澳洲墨尔本的一名全职iOS开发者提供的文章。他在论坛上是一个很摩登的年轻人 – Adam Eberb…

Julia学习笔记(一)——入门

文章目录1 入门1.1 启动与退出1.1.1 启动1.1.2 退出1.2 编译文件1.3 变量1.3.1 基本介绍1.3.2 重定义1.3.3 变量名合法性1 入门 1.1 启动与退出 1.1.1 启动 在没有任何IDE的帮助下&#xff0c;使用cmd启动黑窗口来尝试julia是一种最简单的方法。我们称进入julia后的黑窗口为…