1、移动端遇到的兼容问题?
1 input框输入问题
最开始在input输入框中,也会习惯性的写上lineheight(其实可以不写),当使用placeholder的时候自己测试也没有问题。但当测试用魅族mx4自带浏览器测试的时候发现,在input输入框中,输入光标不会上下居中。当时也感觉很奇怪,然而将lineheight删掉就可以了,input中的所有元素就是默认居中的。
2 移动端最小识别rem
如果采用rem为.01rem的时候 ipone5 会显示不出来 需要用border来解决
3 如果给元素设置一个像素的边框的话,那么在手机上看起来是会比一个像素粗的。
解决方法:使用伪类元素模拟边框,使用transform缩放
.a::after{ content: ''; display: block; width: 100%; height: 1px; background: #333; position: absolute;left: 0;bottom: 0; transform: scaleY(0.5)
2、http和https的区别?
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
5、https://www.cnblogs.com/mylanguage/p/5635524.html(参考)
3、如何提高网页性能?
1、尽量减少Http请求
2、减少DNS查找
3、避免跳转
4、缓存ajax
5、推迟加载
6、提前加载
7、减少DOM元素操作
8、用域名划分页面内容
9、减少iframe的大小
10、避免404错误
4、移动端的适配怎么做?
1、https://www.cnblogs.com/MaggieGao/p/6994868.html
2、https://blog.csdn.net/zqf065/article/details/72118289
5、什么是闭包?在开发项目时什么地方用闭包?
1、使用闭包代替全局变量
2、函数外或在其他函数中访问某一函数内部的参数
3、在函数执行之前为要执行的函数提供具体参数
4、在函数执行之前为函数提供只有在函数执行或引用时才能知道的具体参数
5、为节点循环绑定click事件,在事件函数中使用当次循环的值或节点,而不
是最后一次循环的值或节点
6、暂停执行,
7、包装相关功能
8、http://www.cnblogs.com/star-studio/archive/2011/06/22/2086493.html
9、https://www.cnblogs.com/xdouby/p/6421936.html
10、使用闭包主要是为了设计私有的方法和变量,
11、闭包的优点:
是可以避免全局变量的污染,
12、闭包的缺点:
是闭包会常驻内存会增大内存的使用量,使用不当很容易造成内存泄露。
13、闭包的三个特性:
(1) 函数嵌套函数
(2) 函数内部可以引用外部的参数和变量
(3) 参数和变量不会被垃圾回收机制回收
6.继承的几种方式?
1、原型链继承
特点:
非常纯粹的继承关系,实例是子类的实例,也是父类的实例;
父类新增原型方法/原型属性,子类都能访问到;
简单,易于实现.
缺点:
无法实现多继承;
来自原型对象的引用属性是所有实例共享的;
创建子类实例时,无法向父类构造函数传参.
2、构造继承
特点:
创建子类实例时,可以向父类传递参数
可以实现多继承(call多个父类对象)
缺点:
实例并不是父类的实例,只是子类的实例
只能继承父类的实例属性和方法,不能继承原型属性/方法
无法实现函数复用,每个子类都有父类实例函数的副本,影响性能
3、实例继承
特点:
不限制调用方式,不管是new 子类()还是子类(),返回的对象具有相同的效果
缺点:
实例是父类的实例,不是子类的实例
不支持多继承
4、拷贝继承
特点:
支持多继承
缺点:
效率较低,内存占用高(因为要拷贝父类的属性)
无法获取父类不可枚举的方法(不可枚举方法,不能使用for in 访问到)
5、组合继承
特点:
既是子类的实例,也是父类的实例
不存在引用属性共享问题
可传参
函数可复用
缺点:
调用了两次父类构造函数,生成了两份实例(子类实例将子类原型上的那份屏蔽了)
6、寄生组合继承
特点:
堪称完美
缺点:
实现较为复杂
详情请看:
https://www.cnblogs.com/humin/p/4556820.html
7.Jquery的优点?
1、轻量级
2、强大的选择器
3、出色的DOM操作的封装
4、可靠的事件处理机制
5、完善的Ajax
6、不污染顶级变量
7、出色的浏览器兼容性
8、链式操作方式
9、隐式迭代
10、行为层与结构层的分离
11、丰富的插件支持
12、完善的文档
13、开源
详情请看:
https://www.cnblogs.com/qitiandandan/p/5682566.html
8.调试是怎么做的?
如果是网页开发的话呢 可以使用浏览器的f12 开发人员工具调试。如果是安卓或者ios呢可以抓包获取接口请求信息,或者使用日志输出来检测。
9.说一下你在项目开发过程中遇到的最深刻的问题以及你是怎么解决的?
https://blog.csdn.net/songlf521/article/details/56899857
10.本地存储localStore与sessionStorage的区别,都在什么地方使用?
https://blog.csdn.net/qq_40779721/article/details/79196893
11.订单支付怎么实现?
https://blog.csdn.net/TengdaLiu/article/details/78244745
12.DOM执行事件流程?
1.捕获阶段:先由文档的根节点document往事件触发对象,从外向内捕获事件对象;
2.目标阶段:到达目标事件位置(事发地),触发事件;
3.冒泡阶段:再从目标事件位置往文档的根节点方向回溯,从内向外冒泡事件对象
13.、Scss和sass,less区别?
https://www.cnblogs.com/wangpenghui522/p/5467560.html
14、伪类和伪元素的区别?
本质区别就是是否抽象创造了新元素
https://blog.csdn.net/q1056843325/article/details/53560588
15.多维数组如何实现扁平化处理
[图片上传失败...(image-8421c3-1532688777159)]
16.jsonp的实现原理
ajax请求受同源策略影响,不允许进行跨域请求,而script标签src属性中的链接却可以访问跨域的js脚本,利用这个特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的js代码,在src中进行了调用,这样实现了跨域。
17.****什么样的网站适合作响应式?
相关网址:https://zhidao.baidu.com/question/753168273876792884.html
(1)背景大图+简单的多列布局
(2)单页单栏布局
(3)不规则的栅格布局
(4)经典的F格式布局
(5)极简分层
18****、说一下git 开发的流程与命令行语句?
1.创建一个git裸服务器 (git init --bare)
2.从裸服务器将版本库克隆至本地(git clone )
3.本地常规操作
4.推送版本至服务器 (git remote + git push origin master)
5.从远程服务器拉取版本(git pull)
19****、前端工作流程?
相关网站:https://www.cnblogs.com/peachGirl/p/5971893.html
产品分析需求
领导或甲方提出需求
设计出原型图,根据原型图出设计稿
交给设计稿团队评审,之后交给前端制作静态页面,交给设计审核,通过后交给开发人员进行动态数据添加
发布测试环境,产品测试,领导审核,成功后直接发布产品环境或进行版本迭代
2****0****、tap事件原理?
相关网站:https://www.cnblogs.com/cythia/p/6928364.html
tap事件的原理其实是源于触摸touch事件,在移动触摸事件就是在同个点触发,及touchmove的距离距离touchstar的距离为0,并且点击的时间不超过某个设定的时间值,超过该时间值的话,就属于长按了
2****1****、懒加载原理?
相关网址:https://blog.csdn.net/weixin_35955795/article/details/54411516
原理:先将img标签中的src链接设为同一张图片(空白图片),将其真正的图片地址存储再img标签的自定义属性中(比如data-src)。当js监听到该图片元素进入可视窗口时,即将自定义属性中的地址存储到src属性中,达到懒加载的效果
2****2****、移动端的fastclick怎么实际使用?
相关网址:https://blog.csdn.net/qq_34849000/article/details/79377926
2****3****、公司的测试是怎么向你提bug的?他是怎么记录的?
24****、原生ajax的步骤?
1.创建一个ajax对象
2.连接到服务器
3.发送请求
4.接受返回值
https://www.cnblogs.com/yufann/p/JS-Ajax.html(看代码的话打开网址)
get和post的区别:
https://www.cnblogs.com/longm/p/7205318.html?utm_source=itdadao&utm_medium=referral
26****、有几种方法可以改变this指向?
有三种
1.通过对象的方法来定义一个函数(谁绑定了我,我就指向谁)
2.函数被new了一下,创建了新的对象,this指向新的对象(谁new了我,我就指向谁)
3.通过call,apply改变this指向
27****、说一下你有几种让子盒子居中的方法?
margin:auto
display:flex;
justify-content:center;
28****、vue-router的原理?catch方法的实现原理?
vue-router单页面应用中,是路径之间的切换,也就是组件之间的切换
29****、git和svn的区别?
git是分布式的,svn不是
git把内容按元数据的方式存储,而svn是按文件
git分支和svn的分支不同
git没有一个全局的版本号,而svn有
git的内容完整性要优于svn
git下载下来后,在本地不必联网就可以看到所有的log,svn需要联网
30****、vue计算属性和watch的区别?
computed计算属性是用来声明式的描述一个值依赖了其它的值。当你在模板里把数据绑定到一个计算属性上时,Vue 会在其依赖的任何值导致该计算属性改变时更新 DOM。这个功能非常强大,它可以让你的代码更加声明式、数据驱动并且易于维护。
watch监听的是你定义的变量,当你定义的变量的值发生变化时,调用对应的方法。
Vue的优势 为什么使用vue
1.vue是mvvm模式的框架
2.Vue.js 是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和 Vue 生态系统支持的库开发的复杂单页应用。
- mvvm是什么?
MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点
1. 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Mo del变化的时候View也可以不变。
2. 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
3. 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xml代码。
4. 可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
- vuex实现原理
Vuex的状态存储是响应式的,当Vue组件从store中读取状态时,若store中状态发生改变,响应的组件也会得到更新状态。但不能直接改变state,必须通过显示的提交(commit)mutations来追踪每一个状态的变化。
- vue Seo优化
一、内部优化
(1)META标签优化:例如:TITLE,KEYWORDS,DESCRIPTION等的优化
(2)内部链接的优化,包括相关性链接(Tag标签),锚文本链接,各导航链接,及图片链接
(3)网站内容更新:每天保持站内的更新(主要是文章的更新等)
二、外部优化
(1)外部链接类别:友情链接、博客、论坛、B2B、新闻、分类信息、贴吧、知道、百科、站群、相关信息网等尽量保持链接的多样性
(2)外链运营:每天添加一定数量的外部链接,使关键词排名稳定提升。
(3)外链选择:与一些和你网站相关性比较高,整体质量比较好的网站交换友情链接,巩固稳定关键词排名
- vue服务器渲染
从头搭建一个服务端渲染的应用是相当复杂的。幸运的是,我们有一个优秀的社区项目 Nuxt.js 让这一切变得非常简单。Nuxt 是一个基于 Vue 生态的更高层的框架,为开发服务端渲染的 Vue 应用提供了极其便利的开发体验。更酷的是,你甚至可以用它来做为静态站生成器。
- Es6和es5的区别
<u>https://blog.csdn.net/changsimeng/article/details/62883952</u>
- Webpack按需加载
<u>https://segmentfault.com/q/1010000009122066</u>
- 你常用的loader加载器有哪些
<u>https://www.cnblogs.com/hughes5135/p/6891784.html?utm_source=itdadao&utm_medium=referral</u>
- 怎么理解promise(语法糖)
promise是一个对象,可以获取异步操作的消息,promise有3种状态, pending :进行中,fulfilled :已经成功
rejected 已经失败
- 如何实现异步编程,有哪些方式
回调函数 2.事件监听 3.Promise对象
- 解释一下什么是vue实例
一个 Vue 应用由一个通过 new Vue 创建的根就叫 Vue 实例
- Vue组件有多少个生命周期
一共11个,9个常用,两个不常用 .
beforecreate 初始化之前调用
created 实例化之后调用
beforeMount 挂载之前
mounted 挂载之后调用
beforeUpdate 更新之前
updated 更新之后
activated 组件激活时
deactivated 移除之后
- Vue组件之间传递数据怎么实现,区别是什么?
子传父,父传子,兄弟传值
在开发中怎么与后台合作?
Vue数据绑定的实现原理
首先对数据进行劫持监听,所以设置一个监听器Observer用来监听所有属性,如果属性变化就告诉订阅者Watcher判断是否更新,因为订阅者有多个,所以要一个Dep来收集订阅者,在监听器和订阅者之间统一管理,还需要一个指令解析器Compile,对每隔元素进行解析,当订阅者收到属性变化就更新视图
46、nodejs了解吗
node.js是js的运行环境,是一门基于js开发的后台语言
47、数组排序有哪些方式
https://blog.csdn.net/wxb774567876/article/details/8141916
48、用css如何实现左侧宽度固定,右侧宽度自适应
- 固定宽度区浮动,自适应区不设宽度而设置
2.固定宽度区使用绝对定位,自适应区照例设置
49、技术团队人员分配
50、如何开发响应式网站开发
响应式网站开发一般的轻量级采用 bootstrap 的方式,那么在重量级的网站上我们采用媒体查询(media),这bootstrap的冗余性,也提高了代码的性能,现在普遍的公司都不用boostrap了;
51、Js数据类型有哪些
6个基础数据类型:::字符串、数字、布尔、数组、对象、Null、Undefined;
https://www.cnblogs.com/wu-web/p/6807845.html
52、父盒子高度自适应,里面的文字行高如何自适应
可以不用设置高度,如果父层内容没有设置浮动,是会自适应高度的。如果父层没有浮动,而包含的两个子层设置了浮动,那父层也要设置浮动,才能自适应高度。
53、在工作中如何配合安卓和ios开发工程师
首先要和他们打好关系,其次做的东西要合格,互相沟通交流技术,在实际开发中其实就是把自己的工作做好,再把自己的项目交给ios或者安卓就可以了工作
54、项目结构是如何搭建的
55、常用的浏览器有哪些
谷歌 IE 火狐 欧朋
56、渐进增强和优雅降级
两种都是针对浏览器不同版本进行构建页面的。
渐进增强其实就是由低版本到高版本进行构建页面,先保证低版本最基本的功能,最后在到高级浏览器。
优雅降级其实就是渐进增强的反转,一开始就把完整的功能构建出来,然后在对低版本的浏览器进行兼容。
渐进增强从webkit > moz > o 基础,优雅降级从 基础 > o > moz > webkit。
57、常用的dom的操作方法
dom操作的四种基本的方法。
getElementByld()这个方法的参数就是元素的id值,返回来的是一个有指定id的元素对 象;
getElementsByTagName()这个方法的参数是一个标签元素名,返回来的是一个对象数组,数组里面的每个元素都是对象;
getAttribute()这个方法的参数是元素的某个属性名,返回来的事这个元素属性的属性值;
setAttribute()这个方法的参数有两个,一个是元素的某个属性名,还有一个是这个元素的新属性值,它并没有返回值;
58、事件代理的原理
事件代理就是在一个组先级DOM元素绑定一个事件,当触发了子孙级DOM元素事件的时候,利用事件流的原理来触发绑定在祖先级DOM的事件,那么咱们再说一下事件流,当一个HTML元素产生一个事件的时候,这个事件会在元素节点与根节点之间的路径传播,路径所经过的结点都会收到该事件,这个传播过程就是DOM事件流。
59、前端安全问题
前端安全问题对咱们是一个很大的话题,在开发中各种安全问题类型也是种类繁多的,我们先说几个:
XSS漏洞,它其实就是跨站脚本攻击的简称,攻击者往web页面注入恶意的script代码,可对用户进行盗取cookie信息以及会话劫持等各种攻击,咱们解决的方法是在不同上下文中,使用合适的escape方式,不要相信任何来自用户的输入;
CSRF漏洞,它与XSS攻击相比,CSRF攻击往往不大流行和难以防范,所以被认为比XSS更具有危险性,咱们解决的方法给所有请求加上token检查,token一般是随机字符串,只需要确保其不可预测性即可,但千万不要放在cookies里。
60、Jquery的优化方法
咱们尽量选用id选择器和元素选择器,因为遇到这些选择器的时候,jq会自动调用浏览器的原生方法,所以他们的执行速度是很快的;尽量不要用.live()的方法,这个是jq1.3.1版本之后新增的方法,它就是为新增DOM元素绑定事件,对于效率来说,这个方法比较占用资源;还有尽量使用data方法来储存变量,因为这个是jq的内部函数。