美文网首页
中科笔试题

中科笔试题

作者: 稻草人_9ac7 | 来源:发表于2019-12-10 14:58 被阅读0次

1、设置元素浮动后,该元素的display值是?

答案:设置元素为浮动后,display的值是block。

2、["1","2","3"].map(parseInt)?

[1, NaN, NaN]

3、以下结果正确的是___?

A、typeof undefined=undefined和typeof null=null
B、typeof 'hello'=String和typeof 0=Boolean
C、typeof[1,2,3]==Object和typeof NaN==undefined
D、 var a = {name: "李华", age: "23" }; func = function() {}; typeof a == Object和typeof func == Object

4、下面代码执行的结果依次为___?

 bar()
        var bar = function() {
            console.log('bar2')
        }

        function bar() {
            console.log('bar1')
        }
        bar()

结果是:
bar1
bar2

5、下面代码执行后结果依次为___?

    var myObject = {
            foo: 'bar',
            func: function() {
                var self = this;
                console.log(this.foo);
                console.log(self.foo);
                (function() {
                    console.log(this.foo)
                    console.log(self.foo)
                })()
            }
        }
        myObject.func()

结果:
bar
bar
undefined
bar

分析:

 var myObject = {

            foo: 'bar',
            func: function() {
                var self = this;
                console.log('this', this);//foo

                console.log(this.foo);//bar
                console.log(self.foo);//bar
                (function() {
                    console.log('this', this);//Window 
                    console.log('self', self);//foo
                    console.log(this.foo) //undefined
                    console.log(self.foo)//bar
                })()
            }
        }
        myObject.func()

6、写出下面代码输出的顺序

     setTimeout(function() {
            console.log(1)
        });
        new Promise(function(resolve, reject) {
            console.log(2)
            resolve(3)
            console.log(4)
        }).then(function(val) {
            console.log(val)
        })
        console.log(5)

输出结果:
2,4,5,3,1

7、js动态创建10个div?

    for (var i = 0; i < 100; i++) {
            var  op  =  document.createElement("div");         
            op.innerText = i
            document.body.appendChild(op);
        }

12、介绍xss、CSRF原理以及防御?

CSRF

CSRF 概念:CSRF 跨站请求伪造 (Cross—Site Request Forgery),存在巨大的危害性,你可以这样来理解:​ 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中 Web A 为存在 CSRF 漏洞的网站,Web B 为攻击者构建的恶意网站,User C 为 Web A 网站的合法用户。

CSRF 攻击攻击原理及过程如下:

1. 用户 C 打开浏览器,访问受信任网站 A,输入用户名和密码请求登录网站 A;
2. 在用户信息通过验证后,网站 A 产生 Cookie 信息并返回给浏览器,此时用户登录网站 A 成功,可以正常发送请求到网站 A;
3. 用户未退出网站 A 之前,在同一浏览器中,打开一个 TAB 页访问网站 B;
4. 网站 B 接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点 A;
5. 浏览器在接收到这些攻击性代码后,根据网站 B 的请求,在用户不知情的情况下携带 Cookie 信息,向网站 A 发出请求。网站 A 并不知道该请求其实是由 B 发起的,所以会根据用户 C 的 Cookie 信息以 C 的权限处理该请求,导致来自网站 B 的恶意代码被执行。

防御 CSRF 攻击:​ 目前防御 CSRF 攻击主要有 2 种策略:验证 HTTP 请求的 Referer 字段;在请求地址中添加 token 并验证

XSS XSS, 即为(Cross Site Scripting), 中文名为跨站脚本,是发生在目标用户的浏览器层面上的,当渲染 DOM 树的过程成发生了不在预期内XSS(Cross Site Scripting),跨站脚本攻击,是一种允许攻击者在另外一个用户的浏览器中执行恶意代码脚本的脚本注入式攻击。本来缩小应该是 CSS,但为了和层叠样式(Cascading Style Sheet,CSS)有所区分,故称 XSS 执行的 JS 代码时,就发生了 XSS 攻击。

(1) 持续型 XSS 攻击:恶意脚本来源于网站的数据库

1. 攻击者通过评论表单提交将`<script\>alert(‘aaa’)</script\>`提交到网站
2. 网站后端对提交的评论数据不做任何操作,直接存储到数据库中
3. 其他用户访问正常访问网站,并且需要请求网站的评论数据
4. 网站后端会从数据库中取出数据,直接返回给用户
5. 用户得到页面后,直接运行攻击者提交的代码<script\>alert(‘aaa’)</script\>`,所有用户都会在网页中弹出 aaa 的弹窗

(2) 反射型 XSS 攻击:恶意脚本来源于受害者的请求

在一个反射型 XSS 攻击中,恶意文本属于受害者发送给网站的请求中的一部分。随后网站又把恶意文本包含进用于响应用户的返回页面中,发还给用户。
1. 用户误点开了带攻击的 url :`http://xxx?keyword=<script\>alert('aaa')</script\>`
2. 网站给受害者的返回中包含了来自 URL 的的恶意文本
3. 用户的浏览器收到文本后执行页面,会在网页中弹窗 aaa

(3) 基于 DOM 的 XSS 攻击

基于 DOM 的 XSS 攻击是反射型攻击的变种。服务器返回的页面是正常的,只是我们在页面执行 js 的过程中,会把攻击代码植入到页面中
1. 用户误点开了带攻击的 url :`http://xxx?name=<script\>alert('aaa')</script\>`
2. 网站给受害者的返回中正常的网页
3. 用户的浏览器收到文本后执行页面合法脚本,这时候页面恶意脚本会被执行,会在网页中弹窗 aaa

如何防止攻击

XSS 攻击其实就是代码的注入。用户的输入被编译成恶意的程序代码。所以,为了防范这一类代码的注入,需要确保用户输入的安全性。对于攻击验证,我们可以采用以下两种措施:

1. 编码,就是转义用户的输入,把用户的输入解读为数据而不是代码
2. 校验,对用户的输入及请求都进行过滤检查,如对特殊字符进行过滤,设置输入域的匹配规则等。

SQL 注入

SQL 注入就是一种通过操作输入来修改后台 SQL 语句达到代码执行进行攻击目的的技术。

13、编写一个方法去掉数组里面重复的内容,var arr =[1,2,3,4,5,1,2,3]?

 var arr = [1, 2, 3, 4, 6, 1, 3, 4, 5, 1, 2, 3]
        function reArr(params) {
            var newArr = []
            for (let i = 0; i < params.length; i++) {
                if (newArr.indexOf(params[i]) == -1) {
                    newArr.push(params[i])
                }
            }
            return newArr
        }
        let a = reArr(arr)
        console.log("去重前", arr)
        console.log("去重后", a)

14、请实现快速排序算法?

15、请使用vue/React设计一个Dialog组件?

相关文章

  • 中科笔试题

    1、设置元素浮动后,该元素的display值是? 答案:设置元素为浮动后,display的值是block。 2、[...

  • 2022年,最新iOS开发笔试题-界面篇(附答案)

    前言: iOS面试题 一共分为笔试题和面试题两部分 笔试题 一共分为10个 总共613题 面试题 一共400题 笔...

  • 儿童画解析

    《Mika的儿童画解析》 ——中科研心理所绘画心理学专业考试题 这是Mika的画,叫做《女儿国》。 儿童绘画情况介...

  • 360笔试题

    1. 在函数F中,本地变量a和b的构造函数(constructor)和析构函数(destructor)的调用顺序是...

  • 2018年 iOS 面试心得

    https://mp.weixin.qq.com/s/VBgLpBCNX7XLcqebPimSEA 面试题分类 笔...

  • 你从未放弃

    翻出闲置的纸本 重新练习着 当年的试题 那是青春的印迹 一笔一笔纠正着 潦草的笔记 逝去的光阴 就这样 一笔一笔 ...

  • 将我们的笔探触到更深远与更开阔处(连中国)

    将我们的笔探触到更深远与更开阔处 2017年高考北京卷试题整体评析及学习启示 2017年高考北京卷的试题...

  • Android 2019笔试题

    最近为了面试新的开发人员准备一套笔试题,选择题第一题和简答题第六题是因为业务需求需要培养一个openGL ES和C...

  • addEventListener-捕获阶段-冒泡阶段

    从阿里2018笔试题讲 addEventListener-捕获阶段-冒泡阶段 下面代码中,当点击点我时,输出的...

  • 执笔写梦

    执笔写梦/落子秋 以手中之笔,写过往,描未来,一笔一划终勾勒人生。 熟悉的地方,熟悉的试题,同样的烦恼与疑惑,甚至...

网友评论

      本文标题:中科笔试题

      本文链接:https://www.haomeiwen.com/subject/uumigctx.html