深圳中软国际有限公司(套题)

深圳市 2018-10-06 136
选择题 填空题 问答题 编程题 试题难度
0 0 19 0 比较难
试题信息收集不易,转发请带上出处,不甚感谢!如果您对任何编程问题还有疑问,欢迎点击下方按钮向老师提问!
问答题
  • 11、display和position都有哪些值?分别列举一下这些值得用途。
  •   display常用的值有none、inline、block、inline-block

      none:隐藏元素

       inline:内联元素,与其他元素在一行;   

       block:块级元素

       inline-block:行内块元素


     position属性有四个可选值,分别为static、relative、absolute、fixed。

       static:默认值,元素出现在正常的文档流中。

       relative: 相对定位,相对自身位置定位,可通过设置left、top、right、bottom的值来设置位置;

       absolute : 绝对定位,相对于最近的除static定位以外的元素定位,若没有,则相对于html定位; 

       fixed : 固定定位 相对于浏览器窗口定位,脱离文档流,不会随页面滚动而变化。

  • 12、设计一个布局方案,使得页面在PC端和pad端显示为一行三列,在手机端为一列三行。
  • <div class="container">

    <div class="box">1</div>

    <div class="box">2</div>

    <div class="box">3</div>

    </div>


    <style type="text/css"> 

    @media (min-width: 720px) {

    .container {

    display: flex;

    }

    .box{

    flex: 1;

    }

    }

    </style>

  • 13、请解释ajax的工作原理
  •  利用JS原生对象XmlHttpRequest,在不刷新页面的情况下,可以向服务器发送请求,请求回来的数据可以是XML或文本,将请求回来的数据通过DOM操作显示在页面上。具体的步骤是这样的

       1.创建XHR(XmlHttpRequest的缩写)对象,这里存在兼容性的问题,IE通过ActiveXObject对象创建,其它的通过XmlHttpRequest对象创建。

       2.使用open()方法建立连接,有三个参数,第一个参数是请求类型,通过是get或post请求,第二个是请求的地址,第三个是否为异步请求,true表示异步,false表示同步。

      3.使用send()发送请求,接一个参数,需要发送的的信息,以URL参数的形式拼接,如果没有为null

      4.数据响应,这个阶段涉及到的API主要有responseText,responseXML,status(状态码),对于异步请求还会涉及到readyState和状态改变事件onreadystatechange。但读取状态改变时会触发这个事件。读取状态有五个阶段

     0:未初始化,还没有调用open方法

     1:启动,调用了open方法,但还没有调用send方法

     2:发送,调用了send方法,但还没有响应

     3:接收,收到了部分响应的数据

     4:完成,收到全部响应的数据

      status表示http的状态码,表示读取的信息是否正确,200表示成功,500表示服务器错误,304表示资源没有改变,使用缓存的数据。

  • 14、自定义一个浏览器兼容的事件绑定方法需要注意哪些问题?
  • 要注意浏览器的兼容性,IE9以下的使用attachEvent函数绑定,其它使用addEventListener函数绑定。attachEvent函数需要在事件名称前面加上“on”

  • 15、地址栏输入一个地址后,输入回车,描述一下这时开始浏览器做了什么。
  • 答:根据域名查找服务器,下载服务器的文档内容,下载完后浏览器开始解释执行这些html代码,渲染页面,并行下载所需的资源,图片、css、js文件等。

  • 16、使用原生JS技术,加载['pic.jpg','pic2.jpg']数组中的所有图片到一个class名为“imgs”的div里面,并分别设置img的宽高等于它本身的宽高
  • var imgs = ['pic.jpg', 'pic2.jpg']

    var div = document.querySelector('.imgs')

    var len = imgs.length;

    for(var i = 0; i < len; i++) {

    var img = document.createElement('img');

    img.src = imgs[i];

    div.appendChild(img);

    }


    提示:图片不设置宽高,默认就是原图的大小,如果非要设置,可以在img的onload事件去设置。这个知识点在面试官追问时用。

  • 17、使用原生JS技术,将一个类似无限下级的对象(如:省市区)遍历到一个一维数组里面(如:[{....}....])
  • 答:对于这样的数据结构,使用递归算法来处理,方法的参数为父级,如果有下级,调用函数本身,下级对象作为参数传递,直到没有下级为止。


    提示:对于层次不确定的数据结构,有要考虑使用递归算法。

  • 18、用vue.js实现一个基本的图片轮播,说出你的设计方案及思路,并且重点说明功能设计时要考虑的因素。
  • 答:

    我的思路是将所有要显示的图片,放在一个div容器,并且不换行显示,div的容器大小与图片的大小一致,溢出部分隐藏。每次轮播就是移动水平滚动条,移动长度为一个图片的宽度,移动到最后又从0开始。


    需要考虑的因为比较多

    1.项目中是不是很多地方需要用到轮播,如果是,就需要组件化设计

    2.轮播最多支持多少张图片,要有考虑。

    3.点击轮播是否需要跳转其它页面

    4.左右导航和指示器是否要显示

    5.代码设计上要考虑使用数据驱动dom,而不是直接操作dom


    提示:轮播是一个比较复杂的功能,在面试中也不能面面俱全,但要把核心的地方说出来。

  • 19、在请求ajax数据时,怎么判断数据是否是安全的?
  • 答:在我们的项目里,接口都需要传递token来验证身份,只有验证通过的才能正常返回数据。

    说明:在实际项目中,接口的安全都是在后台来处理,而不是前端。本题的目的考察你是否真正的做过项目。

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