米哈游8.15前端笔试 算法题+代码

卷面介绍

笔试题型是:10个选择题、3个算法编程题、1个前端编程题(一共100分钟)
选择题知识点包括有 c基础、html、css、js、http状态码,不能脱离笔试页面。
算法题编程语言限定 Typescript,但是js的语法都能用,可以用IDE。
前端题需要你直接手撸一个选择器,参考ElementUI的创建条目输入选择器版,当然功能和这个还是有很大不同。不能用IDE。

前言

js基础不是很好,思路都是按c语言来的。有啥可以改进的地方,请指大佬在评论区指出就行。

第一题

题干

判断字符串是否是回文串,只识别数字和字母(不区分大小写)。

输入样例

'a.bc1 21cb,A'

输出样例

true

分析

1、识别回文串
2、只识别数字和字母
3、不区分大小写

实现代码

// c语言中 大写字母+32==小写字母
// 但是js中无法这样做或者说我不会 单字符与ascii码 的相互转化
// 因为不会大小写转化手撸了一个映射表
const cList={
    'a': 'A',
    'b': 'B',
    'c': 'C',
    'd': 'D',
    'e': 'E',
    'f': 'F',
    'g': 'G',
    'h': 'H',
    'i': 'I',
    'j': 'J',
    'k': 'K',
    'l': 'I',
    'm': 'M',
    'n': 'N',
    'o': 'O',
    'p': 'P',
    'q': 'Q',
    'r': 'R',
    's': 'S',
    't': 'T',
    'u': 'U',
    'v': 'V',
    'w': 'W',
    'x': 'X',
    'y': 'Y',
    'z': 'Z',
    'A': 'A',
    'B': 'B',
    'C': 'C',
    'D': 'D',
    'E': 'E',
    'F': 'F',
    'G': 'G',
    'H': 'H',
    'I': 'I',
    'J': 'J',
    'K': 'K',
    'L': 'I',
    'M': 'M',
    'N': 'N',
    'O': 'O',
    'P': 'P',
    'Q': 'Q',
    'R': 'R',
    'S': 'S',
    'T': 'T',
    'U': 'U',
    'V': 'V',
    'W': 'W',
    'X': 'X',
    'Y': 'Y',
    'Z': 'Z',
}

function verify(param){
    // write code here
    let str=param.match(/[0-9a-zA-Z]+/g).join('')// 正则提取字符和数字再拼接
    let l=str.length
    for(let i=0;i<l/2;i++){
        // 先做大小写判断
        if(cList[str[i]] == cList[str[l-i-1]] && cList[str[l-i-1]]!=undefined){
            ;
        }
        // 在识别数字
        else if(str[i] == str[l-i-1]){
            ;
        }
        // 遇到无法匹配项则返回false
        else{
            return false
        }
    }
    return true
}

第二题

题干

有三个数字数组,求每个数组中的最大值,并将这三个值降序排列作为一个数组返回。

输入样例

[12, 23, 45], [374, 356, 10, 889], [156, 34]

输出样例

[889, 156, 45]

分析

1、先求三个数组的最大值
2、降序排列三个最大值

// 这里图省事和时间就全用sort排序了,为了效率求最大值可以遍历求
function max(a, b, c){
    let func = function(a, b){
        return b-a
    }
    a.sort(func)
    b.sort(func)
    c.sort(func)
    return [a[0], b[0], c[0]].sort(func)
}

第三题

题干

有一个只包含数字的字符串(length<=12),对其进行3次分割,求其所有可以划分为IP地址的可能,并返回其划分ip地址的数组。

输入样例

'25525511135'

输出样例

['255.255.11.135', '255.255.111.35']

分析

1、先做分割
2、判断分割是否是有效ip

// 发现对每个样例最多只要做3*3*3=27次分割就行了,所以直接暴力
// 本来想用正则 [0-255] 来识别的,但是忘记[]的范围只能0~99之间
// 所以只能自己写个判断
function getIp(str)
{
    let time = 0
    let list = []
    let l = str.length
    // 直接暴力分割
    for(let i=1;i<4;i++)
    {
        for(let j=i+1;j<i+4;j++)
        {
            for(let k=j+1;k<j+4;k++)
            {
                let a=str.slice(0, i)
                let b=str.slice(i, j)
                let c=str.slice(j, k)
                let d=str.slice(k, l)
                if(check(a) && check(b) && check(c) && check(d))
                list.push(a+'.'+b+'.'+c+'.'+d) 
            }
        }
    }
    return list
}
// 判断是否是0~255之间的字符串
function check(s){
    let n = parseInt(s)
    if(n+'' != s){// 排除前导0的情况
        return false
    }
    if(n>=0 && n<=255){
        return true
    }
    return false
}

反思

  第一次笔试,不知道题型和编程语言。所以结果就过了大概7个选择题+2个算法题。肯定是没戏了。做完三个算法题就把时间花完了,没分配时间写前端题了。

  最近准备考研了,所以确实心思不在这边了;又因为自学所以基础不牢,很多方法都不会用,比如大小写转化的toUpperCase()和toLowerCase()。考的题基本在LeeCode都有原题只能怪自己花的时间少了。

  提醒后面来笔试的前端同学好好刷力扣和牛客的题,还是很有用的。

#米哈游笔试##米哈游##笔经#
全部评论
需要米哈游内推可以私我
1 回复 分享
发布于 2021-08-24 14:23
楼主想问一下,前端算法题可以用Java或者python实现吗,还是有语言限制的呀?
点赞 回复 分享
发布于 2021-09-13 09:12
9.12的前端笔试,算法题和这完全不是一个等级的,麻完了
点赞 回复 分享
发布于 2021-09-12 22:46
有没有米哈游前端消息的,跟你一天笔试现在还是HR初筛阶段
点赞 回复 分享
发布于 2021-09-03 08:07
楼主请问你现在面试了吗?
点赞 回复 分享
发布于 2021-09-01 06:16
点 `第${i}题`可跳到力扣上的原题
点赞 回复 分享
发布于 2021-08-17 00:11

相关推荐

海螺很能干:每次看到这种简历都没工作我就觉得离谱
点赞 评论 收藏
分享
群星之怒:1.照片可以换更好一点的,可以适量P图,带一些发型,遮住额头,最好穿的正式一点,可以适当P图。2.内容太少。建议添加的:求职意向(随着投递岗位动态更改);项目经历(内容太少了建议添加一些说明,技术栈:用到了什么技术,还有你是怎么实现的,比如如何确保数据传输稳定的,角色注册用到了什么技术等等。)项目经历是大头,没有实习是硬伤,如果项目经理不突出的话基本很难过简历筛。3.有些内容不必要,比如自我评价,校内实践。如果实践和工作无关千万别写,不如多丰富丰富项目。4.排版建议:建议排版是先基础信息,然后教育背景(要突出和工作相关的课程),然后专业技能(一定要简短,不要长篇大论,写你会什么,会的程度就可以),然后是项目经历(一定要详细,占整个简历一定要超过一半,甚至超过百分之70都可以)。最后如果有一部分空白的话可以填补上校内获得的专业相关的奖项,没有就写点校园经历和自我评价。5.技术一定要够硬,禁得住拷打。还有作息尽量保证正常,不要太焦虑。我24双非本科还是非科班,秋招春招各找了一段实习结果都没有转正,当时都想噶了,最后6月份在校的尾巴也找到一份工作干到现在,找工作有时很看运气的不要急着自我否定。 加油
点赞 评论 收藏
分享
评论
9
35
分享

创作者周榜

更多
牛客网
牛客企业服务