zoukankan      html  css  js  c++  java
  • 华为2018春招前端开发实习生笔试题分享

    我申请的是前端开发岗位,笔试题估计软件开发都是一样的,直接三道大题,一开始不熟悉牛客网的编程环境,浪费了好多时间。

    牛客网编程笔试有一个好处就是可以在本地ide上面编写运行之后再copy到答题环境中,这样可以方便我进行调试,更直观地找到代码中一些小问题并快速修改。

    接下来就是干货分享啦!我笔试的时候做出了两道题,第三题时间不够,没有做出来。不知道有没有面试机会额。

    牛客网编程环境介绍

    我选的是js v8

    代码示例有两个

    1.

    // 求a+b的和
    while(line=readline()){
        var lines = line.split(" ");
        var a = parseInt(lines[0]);
        var b = parseInt(lines[1]);
        print(a+b);
    }

    2.

    // 输出一个整数,表示n阶方阵的和
    // 输入
    // 3
    // 1 2 3
    // 2 1 3
    // 3 2 1
    var n = parseInt(readline());
    var ans = 0;
    for(var i = 0;i < n; i++){
        lines = readline().split(" ")
        for(var j = 0;j < lines.length; j++){
            ans += parseInt(lines[j]);
        }
    }
    print(ans);

    笔试题:

    第一题和第二题的代码实现是在牛客网环境中运行的,如果自己调试的话可以适当修改一下,不影响思路哈。

    1.题目很长,可以简化如下:

    一个整数数组,数组中每个值的范围为0-21,求数组中相邻四个数之和最大,返回该相邻四个数中的第一个数的索引

    // 1.将输入存为一个数组;
    //2.找数组中相邻四个数之和最大,可以考虑遍历求和,将和放在一个新的数组中,其中对象的索引为接收能量窗的索引,值为四个数之和;
    //3.遍历数组,找出最大的值,并输出对应的索引
    var arr = []; var newarr = []; for(var i = 0;i < 21; i++){ arr[i] = parseInt(readline()); } for(var j = 0;j < arr.length-3; j++){ var h = 0; newarr[j] = 0; while(h<4){ newarr[j] += parseInt(arr[j+h]); h++; } } var max = Math.max.apply(null,newarr); var index = newarr.indexOf(max); print(index);

    2.找标准键盘和自然键盘的对应关系,输入是自然键盘,输出是对应的标准键盘的字符,注意大写字母对应输出大写字母,而小写字母对应输出小写字母

    标准键盘:QWERTYUIOPASDFGHJKLZXCVBNM
    自然键盘:ABCDEFGHIJKLMNOPQRSTUVWXYZ
    输入
    H kz k xif.
    输出
    I am a boy.

    //1.在自然键盘中找到对应字符的索引(用Indexof),再根据索引在标准键盘中找到对应字符;
    //2.要考虑大小写问题,可用正则表达式判断字母大小写
    var bstr="QWERTYUIOPASDFGHJKLZXCVBNM"; var zstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var barr=bstr.split(""); var zarr=zstr.split(""); var newarr=[]; while(line=readline()){ var arr = line.split(""); } for(var j = 0;j < arr.length; j++){ var flag = true; //是否小写 if(/^[a-z]+$/.test(arr[j])){ arr[j]=arr[j].toUpperCase(); flag = false; } var index = zarr.indexOf(arr[j]); if(index == -1){ newarr[j] = arr[j]; }else{ if(!flag){ newarr[j] = bstr[index].toLowerCase(); }else{ newarr[j] = bstr[index]; } } } var result = newarr.join(""); print(result);

    3.

    求一个整形数组中最大连续字数组的和
    输入
    2, -3, 4, 11, -5, 8, 3, -6
    输出
    21
    输入是一组数字,数字本身可以是正数,也可以是负数。输出是这个数组的子数组中最大的求和数。如例子中满足该条件的额子数组是:4, 11, -5, 8, 3 求和后的值是21

    // 1.要加和arr.length轮;
    // 2.声明一个新数组,在每一轮加和中依次保存arr[i],arr[i]+arr[i+1],.....,arr[i]+...+arr[arr.length-1]
    // 3.找到新数组中最大的数值,输出该值即可
    // while(line=readline()){
    //     var arr = line.split(", ");
    // }
    var arr=[2,-3,4,11,-5,8,3,-6]
    var newarr=[];
    var a=0;
    for(var i = 0;i < arr.length; i++){
        // arr[i] = parseInt(arr[i]);
        var count = arr.length;
        while(count > i){
            newarr[a] = 0;
            for(var j = i;j < count; j++){
                newarr[a] += arr[j];
            }
            count--;
            a++;
        } 
    }
    var max = Math.max.apply(null,newarr);
    // print(max);
    console.log(max);
  • 相关阅读:
    hdu 4309(最大流+枚举状态)
    hdu 1565+hdu 1569(最大点权独立集)
    hdu 3657(最大点权独立集)
    hdu 3491(最小割+拆点)
    hdu 4394(bfs)
    An Introduction to Numerical Analysis Example 6.1
    陶哲轩谈数学家的合作(来自陶哲轩在数学家Gowers的博文“Is massively collaborative mathematics possible?”上的评论)
    拉格朗日插值多项式之间的递推关系
    三角形的余弦定理
    三角形的余弦定理
  • 原文地址:https://www.cnblogs.com/zhenguoli/p/8666688.html
Copyright © 2011-2022 走看看