2018.3.29携程春招笔试

携程笔试总体上还算简单,但是自己对于一些问题理解还不够深入,所以导致在做题的时候还是有点蒙蔽,下面贴出自己记得住的题目。试题分为两部分,第一大题是选择器20道40分,第二大题是编程题三道60分

题型: JS基础,前端基础, java基础, 数据库基础

一、选择题

1.下列不能归为一类的是
A.SVG,WebGl,MPEG
B.tr, i, p
C.TypeScript, postcss, jade

2.关于promise,输出结果( A )

new Promise( ()=>{ console.log(1) }).then( ()=>{ console.log(2) })
console.log(3)

A.1 3
B.1 2
C.1 3 2
D.1 2 3

3下列关于修饰符混用的说法,错误的是(D)
A.abstract不能与final并列修饰同一个类
B.abstract类中不可以有private的成员
C.abstract方法必须在abstract类中
D.static方法中能处理非static的属性

4.java String A = 'abc'
int B[] = [1, 2,3]
获取长度正确的是( A )
a.A.length()
b.A.length
c.B.length()
d.B.length

5.下列关于聚合函数正确的是( C )
A.SUM( * )
B.MAX( * )
C.COUNT( * )
D.AVG( * )

6.下列关于TRUNCATE TABLE说法正确的是( A)
A.可以有选择性的截断表中的数据
B.可以无条件的删除form
C.作用等于DROP FORM

7.状态码错误的是( D )
A.100 continue
B 200 ok
C 500 Internet server error
D 302 Moved persistent(永久重定向)

分析:301表示永久重定向(Moved persistent)
302表示临时重定向(Moved temporary)

8.javascript的typeof不会返回以下类型( B )
A.undefined
B.array
C.function
D.object

分析:typeof返回的类型有七种: null、undedined、boolean、string、object、symbol、function

9.下列关于fetch一定不正确的是()
fetch.get({
url:'www.baidu.com',
methods:' get'
cache: true,
header-request: '...'
}).then( (res)=>{ console.log(res) })

A.methods支持get,post,delete,options
B.当服务器返回500,代码会报错
C.在浏览器控制台运行会报错
D.兼容性问题

10.结果输出(A)

var foo = 1
funtion foo(){
  console.log(foo)
}
foo()

A.error
B.1
C.undefined

分析:变量声明和函数声明同时存在提升,所以代码等同于

var foo
function foo( ){
  console.log(foo)
}
foo = 1
foo()

最后运行报错foo is not a function

11.js代码输出( C )

var x = 1
function foo(){
    x++
    this.x == x
    return function(){
      console.log(x)
   }
}

var a = 2
var obj = new foo()
obj(a)

A.error
B.1
C.2
D.undefined

12.给出代码,判断设计模式:单例模式,工厂构造模式,适配器模式

二、编程题

1.正则表达式

输入 携程C2t0r1i8p2020校招
输出 2018Ctrip


使用正则表达式截取数字和字符串,并且字符串位于数字后面

var str = readline()
var nums = str.match(/\d+/g)
var chars = str.match(/[A-Za-z]/g)
nums = Array.from(new Set(nums))
print(nums.slice(0, nums.length-1).concat(chars).join(''))

2数组升维


3.现类似迭代方法中的map()方法

输入
[1, 2, 3, 4]
{a: 1, b: 'test'}
输出
[{"key":0,"value":1},{"key":1,"value":2},{"key":2,"value":3},{"key":3,"value":4}]
{"a":{"key":"a","value":1},"b":{"key":"b","value":"test"}}

要求:当输入[]、{}、字符串等返回null

/******************************开始写代码******************************/
function map(data, fn) {
    //判断data类型是数组还是对象
    if(Object.prototype.toString.call(data) === '[object Array]'){
        var res = []
        data.map(function(index, val, array){
            res.push(fn(index, val))
        })
        return res
    }else if(Object.prototype.toString.call(data) === '[object Obejct]'){
        var res = {}
        for(let key in data){
            res[key] = fn(key,val)
        }
        return res
    }
    // {} '' nuber等
    return null
}
/******************************结束写代码******************************/

var input = readline();
var data = JSON.parse(input);
var result = map(data, function(value, key) {
  return {
    key: key,
    value: value,
  }
});
print(JSON.stringify(result));

推荐阅读更多精彩内容