深圳市同步齿科医疗股份有限公司(套题)

深圳市 2018-10-19 422
选择题 填空题 问答题 编程题 试题难度
0 0 19 0 一般
试题信息收集不易,转发请带上出处,不甚感谢!如果您对任何编程问题还有疑问,欢迎点击下方按钮向老师提问!
问答题
  • 1、块级元素和行内元素有哪些?(写出常见即可)
  • 行内元素可在同一行显示,块级元素独占一行显示

    块级元素: <h1>~<h6>,<p>,<div>, ul-li ,ol-li,dl-dt-dd,<table>

    行内元素: <span>,<font>,<strong>,<a>,<img>,<input>,<em>,<iframe>,<i>,<label>

  • 2、什么是盒子模型?
  • 答:

    CSS盒子模型(也叫框模型)就是在网页设计中经常用到的CSS技术所使用的一种思维模型。

    盒子模型和我们日常生活中的盒子一样,也就是能装东西的一种容器。

    它包括的属性有:边框(border)、内边距(padding)也叫填充、外边距(margin)和内容(content)也就是width和height。


    盒子模型分IE和W3C两种盒子模型

    W3C(标准)盒子模型的内容content宽度=width

    IE(怪异)盒子模型的内容content宽度=width+padding+border 组成


    所以W3C盒子的总尺寸=宽高+padding+border+margin

    IE盒子的总尺寸=content+margin

    最终IE盒子和W3C标准盒子的总尺寸是一样的


    补充回答以下一点

    在css3中,可以使用box-sizing来设定,通常我们要设定 box-sizing:border-box;指定盒子模型为IE盒子模型,方便布局。


    补充知识更有说服力,面试官会给你比较深刻的印象。

  • 3、px、em和rem的区别?
  • px:是像素,根据屏幕的分辨率来显示的

    em:相对长度单位,相对父节点font-size大小的倍数关系。

    rem:是根据根节点<html>的font-size大小的倍数关系。


  • 4、css居中的方法(能写多少写多少)
  • 文本水平居中: text-align:center;

    文本垂直居中: vertical-align:middle;

    盒子水平居中: margin:0px auto;


    使用position定位进行居中设置:

    position:fixed. top:50%; left:50%; 

    position:absolute; 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位


    弹性盒子

    父元素: display:flex;

    子元素:margin:auto;


    单元格

    父元素: display: table-cell;text-align: center;vertical-align: middle;

    子元素:display: inline-block;

  • 5、css引入的方式有哪些?link和@import的区别是?
  • css引入方式有:文档内部引入(内部样式表)、外部引入(外部样式表)、标签引入(行内样式)


    link和@import的区别:

    link属于html标签,而@import是css提供的。

    页面被加载时,link会同时被加载,而@import引用的css会等到页面加载结束后加载。

    link是html标签,因此没有兼容性,而@import只有IE5以上才能识别。

    link方式样式的权重高于@import的。

    另外link还有其他的一些用途,比如引入图标 <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />


  • 6、说明css优先级顺序
  • 答:

    css样式的优先级是这样的

    !important优先级最高,其次就是行内样式,再次是权重值,权重值高的优先应用。

    权重值计算是这样的,ID为100 class为10 标签为1,对于复合选择器,将这些权重值相加得到。


    对于优先级的级别相同的情况,后面的样式会覆盖前面的样式。


    注意:面试必须言简意赅,不要讲过多的废话,每句话都要说到要点上。

  • 7、都知道哪些css浏览器兼容问题
  • 1.最常见的兼容性问题就是,不同浏览器的默认margin和padding值不同,一般都需要初始化样式

    *{margin:0;padding:0;}

    2.图片默认有间距,可以使用浮动图片或设置图片行内块级元素解决

    3.透明度一般浏览器使用opacity,IE浏览器使用滤镜filter来设置。

    强调:兼容性存在的问题很多,你只需要讲出三个常用的兼容性就可以了。

    css hack主要是针对IE浏览器的不同版本这是样式。大致分为三种形式的hack

    第一种:属性级Hack:比如IE6能识别下划线”_”和星号” * “,IE7能识别星号” * “,但不能识别下划线”_”,而firefox两个都不能认识。

    第二种:选择符级Hack:比如IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。

    第三种:IE条件注释Hack,通常用于判断浏览器的版本。

    例如针对所有IE:<!–[if IE]><!–您的代码–><![endif]–>

    针对IE6及以下版本:<!–[if lt IE 7]><!–您的代码–><![endif]–>

  • 8、JavaScript的常用数据类型有哪些?并举例说明。
  • 基本数据类型:String,boolean,Number,Undefined, Null

    引用数据类型:Object, Array, Function

  • 9、js数组和字符串常用函数
  • 数组方法:

    Array.concat( ) 连接数组

    Array.join( ) 将数组元素连接起来以构建一个字符串

    Array.pop( ) 删除并返回数组的最后一个元素

    Array.push( ) 给数组添加元素

    Array.sort( ) 对数组元素进行排序

    Array.reverse( ) 颠倒数组中元素的顺序

    Array.shift( ) 将元素移出数组

    Array.slice( ) 返回数组的一部分

    Array.splice( ) 插入、删除或替换数组的元素

    Array.toLocaleString( ) 把数组转换成局部字符串

    Array.toString( ) 将数组转换成一个字符串

    Array.unshift( ) 在数组头部插入一个元素


    字符串方法:

    String.charAt( ) 返回字符串中的第n个字符

    String.concat( ) 连接字符串

    String.indexOf( ) 检索字符串

    String.lastIndexOf( ) 从后向前检索一个字符串

    String.match( ) 找到一个或多个正则表达式的匹配

    String.replace( ) 替换一个与正则表达式匹配的子串

    String.search( ) 检索与正则表达式相匹配的子串

    String.split( ) 将字符串分割成字符串数组

    String.substr( ) 抽取一个子串

    String.substring( ) 返回字符串的一个子串

    String.toLowerCase( ) 将字符串转换成小写

    String.toUpperCase( ) 将字符串转换成大写


  • 10、什么是重构
  • 重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

    软件产品最初制造出来,是经过精心的设计,具有良好架构的。但是随着时间的发展、需求的变化,必须不断的修改原有的功能、追加新的功能,还免不了有一些缺陷需要修改。为了实现变更,不可避免的要违反最初的设计构架。经过一段时间以后,软件的架构就千疮百孔了。bug越来越多,越来越难维护,新的需求越来越难实现,软件的架构对新的需求渐渐的失去支持能力,而是成为一种制约。最后新需求的开发成本会超过开发一个新的软件的成本,这就是这个软件系统的生命走到尽头的时候。

    重构就能够最大限度的避免这样一种现象。系统发展到一定阶段后,使用重构的方式,不改变系统的外部功能,只对内部的结构进行重新的整理。通过重构,不断的调整系统的结构,使系统对于需求的变更始终具有较强的适应能力。

    重构可以降低项目的耦合度,使项目更加模块化,有利于项目的开发效率和后期的维护。让项目主框架突出鲜明,给人一种思路清晰,一目了然的感觉,其实重构是对框架的一种维护。

  • 11、浏览器的内核分别是什么?
  • IE:trident内核

    Firefox:gecko内核

    safari:webkit内核

    opera:以前是presto内核,现在改用google chrome的Blink内核

    Chrome:Blink(基于webkit,google与opera software共同开发)

  • 12、简述一下src和href的区别?
  • src用于替换当前元素,href用于在当前文档和引用资源之间确立联系。

    src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素。

    <script src =”js.js”></script>

    当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。

    href是Hypertext Reference的缩写,指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,如果我们在文档中添加

    <link href=”common.css” rel=”stylesheet”/>

    那么浏览器会识别该文档为css文件,就会并行下载资源并且不会停止对当前文档的处理。这也是为什么建议使用link方式来加载css,而不是使用@import方式。


  • 13、输入url到页面出现到页面出现完成经历了什么过程
  • 答:根据域名查找服务器,下载服务器的文档内容,下载完后浏览器开始解释执行这些html代码,渲染页面,并行下载所需的资源,图片、css、js文件等。

  • 14、常见的HTTP协议的状态消息都有哪些?
  • 200 已成功处理了请求。

    304 请求的网页未修改过。

    401 请求要求身份验证。

    403 拒绝请求

    404 找不到请求的网页。

    500 服务器错误

  • 15、测试网页包括哪些方面?
  • 1.页面效果是否美观

    2.链接是否完好

    3.页面功能(如验证、交互等)是否正确

    4.浏览器的兼容性

    5.安全性检查。不用太专业,找些免费的服务或者工具,简单扫描下自己的网站,把那些严重的漏洞补上。

    6.前端页面性能检查。用各种技术手段尽可能加快页面的加载和展示,可以考虑服务端缓存,过期,压缩,重新切图等等。

    7.易用性检查。检查新用户注册,参与使用等一系列基本流程是否流畅方便,引导和帮助是否到位。

    8.基本信息检查。联系地址,联系方式,客服等等的信息是否准确完善。

    9.搜索引擎优化。

  • 16、前端优化
  • 1.减少http请求

    HTTP协议是无状态的应用层协议,意味着每次HTTP请求都需要简历通信链路,进行数据传输,而在服务器

    端,每个HTTP都需要启动独立的线程去处理,这些通信和服务的开销都很昂贵,减少HTTP请求的数目可有效

    提高访问性能。

    减少HTTP请求的主要手段是合并CSS,合并JavaScript,合并图片。将浏览器一次访问需要的JavaScript,CSS

    合并成一个文件,这样浏览器就只需要一次请求。多张图片合并成一张,如果每张图片都有不同的超链接,

    可通过CSS偏移响应鼠标点击操作,构造不同的URL。

    (2)使用浏览器缓存

    对一个网站而言,CSS,JavaScript,Logo,图标等这些静态资源文件更新的频率都比较低,而这些文件又几乎

    是每次HTTP请求都需要的,如果将这些文件缓存在浏览器中,可以极好地改善性能。通过设置HTTP头中

    Cache-Control和Expires属性,可设定浏览器缓存,缓存时间可以是数天甚至是几个月。有时候,静态资源

    文件变化需要及时应用到客户端浏览器,这种情况可以通过改变文件名实现,比如一般会在JavaScript后面

    加上一个版本号,使浏览器刷新修改的文件。

    (3)启用压缩

    在服务器端对文件进行压缩,在浏览器端对文件解压缩,可有效较少通信传输的数据量。文本文件的压缩效

    率科大80%以上。

    (4)CSS放在页面最上面,JavaScript放在页面最下面

    浏览器会在下载完全部CSS之后对整个页面进行渲染,因此最好的做法是将CSS放在页面最上面,让浏览器尽

    快下载CSS。JS则想法,浏览器在加载JS后立即执行,有可能会阻塞整个页面,造成页面显示缓慢,因此JS最

    好放在页面最下面。


    (5)性能优化主要是围绕执行速度来做的。通常的做法是这样的

    1.使用图片精灵,将多个图标放在一个图片上,然后通过背景图片定位来显示图标

    2.有些图标使用使用阿里字体的,使用他们自带的云加速器下载字体文件

    3.在首次加载的时候,将所需要的数据都放在一个接口上返回,减少请求的数量,经过测试这个效果还是挺

    明显的.

    4.在编码上,我们通过会将this对象存储到临时变量,减少this查找的时间。

    5.对于频繁使用的数据,会将数据缓存起来,减少多次请求接口。

    6.使用压缩工具,对html、css、js文件,进行合并压缩处理,减少文件的体积。

    7,对于数据较大的加载,通常采用分页加载或是按需加载或是延迟加载来处理。

    这是我们比较常见的优化手段。



  • 17、如何做好SEO优化?
  • 这个问题看起来好像与前端没有关系,很多问道这个问题是绝对的蒙蔽。

    答:seo就是搜索引擎优化,未能够让搜索引擎的爬虫程序理解我们的代码的,我们就需要将代码语义化,

    尽量使用语义化标签布局页面,比如标题标题,一个页面只能包含一个h1标签,nav(导航),header(头

    部),footer(页脚),main(主容器)等。除了语义化标签外,在<head>里经常设置以下信息

    1.keywords 关键词的设定

    2.description网页描述信息

    3.title 网页的标题信息

    4.author 作者信息

    除了这些在我们的项目里不使用firame布局,对img标签加上alt属性。还有很多,以上是我在做前端比较常用到的。

  • 18、TCP和UDP的主要优缺,https和http的区别?
  • TCP:

    优点:可靠 稳定

    缺点:慢,效率低,占用系统资源高,易被攻击

    UDP:

    优点:快,比TCP稍安全

    缺点:不可靠,不稳定


    HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。

    简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。


    HTTPS和HTTP的区别主要如下:

    1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

    2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

    3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

    4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

  • 19、什么叫优雅降级和渐进增强,二者有何区别?
  • 优雅降级 graceful degradation:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。

    渐进增强 progressive enhancement:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。


    区别:优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带。


还能输入{{limitInput-companyComment.length}}个字符