资讯专栏INFORMATION COLUMN

面试遇到的一些题

JinB / 354人阅读

摘要:最近面试遇到的一些面试题记录分享下。单个保存的数据不能超过,很多浏览器都限制一个站点最多保存个。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。元素仍保持其未定位前的形状,它原本所占的空间仍保留。

最近面试遇到的一些面试题记录分享下。

公司A:
题目一:
不用jquery等框架/库,查找一个页面上有多少种标签,每种标签的个数,伪代码实现亦可

代码:

var map = {};
function dfs(node) {
    if(node.nodeType === 1) {
        var tagName = node.tagName;
        map[tagName] = map.hasOwnProperty(tagName) ? map[tagName] + 1 : 1;
        var children = node.childNodes;
        for(var i = 0, len = children.length; i < len; i++) {
            dfs(children[i]);
        }
    }
}
dfs(document.body);
console.log(map);

这里估计也就是考察递归搜索吧,当时写的没有这么完整,思路一样,这里没有考虑到有iframe的情况。

公司B:
题目一:
typeof []
答案:object

一开始我的回答是object,面试官问的时候特意问了下确定吗,然后就有点犹豫了,然后面试官又问了下javascript的数据类型有哪些,string,number,null,undefined,object当时忘记了boolean

题目二:
你知道的http的状态码有哪些,代表什么意思
https://segmentfault.com/a/1190000004356...
写出常用的一些状态码就可以了,我也就写了200 304 403 404 500 502 这几个
引申:304是什么意思,是根据什么判断的?
这个还真不太清楚,缓存过期时间?文件内容?待我搞清楚之后再补充...

题目三:
cookie跟session的区别?
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗

考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

 考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:

将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中

出处:https://segmentfault.com/a/1190000004071...

题目四:
有一个数组譬如有十个数字,一秒钟打印一个怎么实现?

代码:

var num = [1, 2, 3, 4, 5, 6],
    len = num.length,
    index = 0;
var timer = setInterval(function () {
    if(index >= len) {
        clearInterval(timer);
    } else {
        console.log(num[index]);
    }
    index++;
}, 1000);

题目五:
position有哪些值?absolute相对于什么定位?
position 属性值的含义:
static
元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。
relative
元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。
absolute
元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
fixed
元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。
资料:http://www.w3school.com.cn/css/css_posit...
绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。
资料:http://www.w3school.com.cn/css/css_posit...

题目六:
一个数组,求出里面连续和最大的一段的起始下标,譬如[1, 3, -4, 4, 2]最大连续和为6 下表为3, 4

   

     var arr = [1, 3, -5, 4, 2, -9, 3, 6],
        sum = arr[0],
        sumIndex = {l: 0, r: 0};
        max = [],
        retIndex = {l: 0, r: 0};
        max[0] = arr[0];
        for(var i = 1, len = arr.length; i < len; i++) {
            max[i] = Math.max(sum + arr[i], max[i-1], arr[i]);
            if(max[i] === sum + arr[i]) {
                retIndex.l = sumIndex.l;
                retIndex.r = sumIndex.r = i;
            } else if(max[i] === arr[i]) {
                retIndex.l = i;
                retIndex.r = i;
            } else {
                retIndex.l = sumIndex.l;
                retIndex.r = sumIndex.r;
            }
            if(sum + arr[i] >= 0) {
                sum = sum + arr[i];
                sumIndex.r = i;
            } else {
                sum = arr[i];
                sumIndex.l = i;
                sumIndex.r = i;
            }
        }
        console.log(max[len - 1] + " " +  retIndex.l + " " +  retIndex.r);
        

题目七:
实现一个once函数 参数是一个函数 返回值也是个函数 只能执行一次 下次执行就是undefined 例如:

var foo = once(function() { console.log(123); });
foo();//123
foo();//undefined
foo();//undefined

实现:

function once(cb) {
    var flag = 1;
    return function() {
        if(flag) {
            cb.apply(cb.caller, arguments);
            flag = 0;
        }
    }
}

题目八:
一个由整数构成的有序数组(有可能有重复的),给一个数,找出它在数组里面出现的位置

解析:
这个就是一个二分查找,因为可能有重复的一直要找到它的前一个元素不等于当前找到的元素为止。
代码就不写了

题目九:
移动端的手势事件有哪些?
由于移动端做的少,当时只记得touchstart touchmove touchend这几个,没有处理这些事件的经验

题目十:
写一个兼容各浏览器的事件监听函数

function addListener(ele, eventName, handler) {
    if(ele.addEventListener) {
        ele.addEventListener(eventName, handler);
    } else if (ele.attachEvent) {
        ele.attachEvent("on" + eventName, handler);
    }
}

主要考虑到兼容IE

引申:
addEventListener 第三个参数有啥用
第三个参数为true在捕获阶段执行处理函数,为false在冒泡阶段执行处理函数默认为false

还有事件模型 IE支持哪种事件模型
事件模型: 捕获->目标->冒泡
IE的事件模型: 冒泡

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86292.html

相关文章

  • 让我印象深刻javascript面试

    摘要:前言对于一个前端来说,面试的时候,难免会遇到的面试题。有几道面试题,有些是我面试遇到的,有些是在网上看到的,但是都印象深刻。 1.前言 对于一个web前端来说,面试的时候,难免会遇到javascript的面试题。就我自己而言。有几道面试题,有些是我面试遇到的,有些是在网上看到的,但是都印象深刻。今天就来简单分析一下我遇到的,印象深刻的一些面试题!主要目的希望能让小伙伴学到一些东西,如过...

    Pink 评论0 收藏0
  • 前端面试 - 收藏集 - 掘金

    摘要:一基础接口的意义百度规范扩展回调抽象类的意义我的前端面试经历百度前端掘金博主就读于电子科技大学,大三狗一枚面试是个漫长的过程,从海投到收获电话面试,一面二面三面,一个步骤出错那么后面就宣告终结。 一道常被人轻视的前端 JS 面试题 - 前端 - 掘金 目录前言第一问第二问变量声明提升函数表达式第三问第四问第五问第六问构造函数的返回值第七问最后前言 年前刚刚离职了,分享下我曾经出过的一道...

    lpjustdoit 评论0 收藏0
  • 金三银四背后,一个 Android 程序员面试心得

    摘要:到十二月份,公司开始第二波裁员,我决定主动拿赔偿走人。加一个小插曲上面的题是饿了吗面试问到的。想去的公司没有面试好,不要气馁,继续加油准备。避免打击自信心。 回顾一下自己这段时间的经历,九月份的时候,公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷。到十二月份,公司开始第二波裁员,我决定主动拿赔偿走人。后续的面试过程我做了一些准备,基本都能走...

    Achilles 评论0 收藏0
  • 深入理解js

    摘要:详解十大常用设计模式力荐深度好文深入理解大设计模式收集各种疑难杂症的问题集锦关于,工作和学习过程中遇到过许多问题,也解答过许多别人的问题。介绍了的内存管理。 延迟加载 (Lazyload) 三种实现方式 延迟加载也称为惰性加载,即在长网页中延迟加载图像。用户滚动到它们之前,视口外的图像不会加载。本文详细介绍了三种延迟加载的实现方式。 详解 Javascript十大常用设计模式 力荐~ ...

    caikeal 评论0 收藏0

发表评论

0条评论

JinB

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<