2018年腾讯校招和小米校招本人所做笔试题——前端Web开发工程师方向

本人愚笨,刚开始对笔试题并不是很了解。仅以此两家为学习的地方,待日后希望更好。现在就把这两家的我记录下来的笔试题整理起来。小米的内容在后,有详细的解答!

腾讯:感觉上腾讯的题目是偏难一点的,不亏是鹅厂。

选择题都是不定选项,且选择题的内容和前端无关,基本上都是计算机最基础的知识。

1、操作系统的置换算法

2、电梯调度SACAN算法

3、jvm性能调优工具有哪些

4、B树和B+数

5、C++多态的理解

6、快速排序算法

7、哈夫曼算法

8、MapReduce描述

9、std::vector初始化

大题是三道题:

1、求(n+1,n+2,...m)最小公倍数和(1, 2, 3, ...m)最小公倍数相等的时候。

说明:n是任意整数1-10的6次方,找出m.

2、

3、

小米的面试题:小米的选择题有单选和多选两种,且内容上也分基础计算机知识和对应的申请职位的知识,比如我的就是前端的知识。

1、网络传输7层模型

https://blog.csdn.net/yaopeng_2005/article/details/7064869

常会被被提及的是应用层与传输层

2、document的方法包括那些

3、图形验证码实现原理

图形验证码基本上有两种,一是前端caves、二是后端实现。

4、闭包及其特点(两个很有学习必要的网址)

https://www.cnblogs.com/wangfupeng1988/p/3991995.html

https://www.cnblogs.com/wangfupeng1988/p/3994065.html

 //1、闭包返回函数的实验
       /* function fn(){
            var max= 10;   
            return function bar(x){
                if(x > max){
                    alert(x);
                }
            }   
        }
        var f1 = fn();
        max = 100;
        f1(15);*/
        
        //2、闭包传递函数的实验
        var max = 10;
        fn = function(x){
            if(x > max){
                alert("YouXiu" + x); //这儿x的值是15,max是10
            }
        };
        (function(f){
            var max = 100;
            f(15);
        })(fn);
        
        //3、----作用域实验-----
        var aa = 2;
        var ab = 3;
        
        function fn(x){
            aa = 20;
            bb = 30;
            
            function bar(x){
               var aa = 200; //这样就是局部变量
                aa = 200; //这儿修改的是全局变量
                bb = 300;
            }
            bar(110);
            alert("H" + x); //这的x是11而不是110 ,110在上一步执行完就被销毁了
            bar(120);    
        }
        
        fn(11);
        //alert("S" + x); 错误代码不回被执行,x的值在fn结束就被销毁了
        alert("L" + aa);

5、冒泡排序

步骤一、从起始位置开始以此比较各个位置与其后一位置的大小,大的话就相互交换

步骤二、第一轮结束最大的已经在数组的最后面了

步骤三、在执行一次循环到倒数第二个数

步骤四、直到最后一个数,排序完毕

6、h1-h6标签

7、内容(content)、填充(padding)、边框(border)、边界(margin):CSS中盒子模型

https://www.cnblogs.com/HDK2016/p/6127856.html

8、相对位置等

这是一个非常到位的解释

https://www.cnblogs.com/HDK2016/p/6127856.html

编程题小米就两道:

第一道是:先是找(1 2 3 3 4 4 4 5 5 5 5 5...)中的规律;每类数是一个分层,如1是第一层,5是第五层,然后求第n个数所在分层之前的所有层的包含数字的个数。如输出6,输出4。大概就是这么个描述,代码说明的更准确。

写好的源码c#版本,提交后是成功通过的。

 class Program
    {
        static int an;
        static void Main(string[] args)
        {

            string line = System.Console.ReadLine();
            int n =System.Convert.ToInt32(line);

            int sum = 0;
            int i;
            for (i = 1; ; i++) {
                sum = sum + XiaoMi(i);
                if (sum > n) {
                    break;
                }
            }
            System.Console.WriteLine(sum - XiaoMi(i));
            System.Console.ReadLine();
        }

        public static int XiaoMi(int n)
        {
            if (n > 2)
            {
                an = XiaoMi(n - 1) + XiaoMi(n - 2);
            }
            else if (n == 1)
            {
                an = 1;
            }
            else if (n == 2) {
                an = 1;
            }
            return an;
        }

2、题目是

这道题在作答的时候,给定的编译环境只有c/c++, java和javascript

以下是这道题的java源码:

public class XiaoMiTest
{
        public static void main(String args[])
        {   
            int numbers[] = {0,1,0,2,1,0,1,3,2,1,2,1};
            int L = numbers.length;
            /*小米测试题*/
           int i;
           int m = 0;
           int j;
           int sum = 0;
           for (i = 0; i < L-1; i = m){
                m++;
                if(numbers[i] > numbers[i+1]){
                    for (j = i + 1; j < L; j++ ){
                        m++;
                        if(j < (L - 1) && numbers[j-1] < numbers[j] && numbers[j+1] < numbers[j]){
                            for(int q = i + 1; q < j; q++){
                                if (numbers[i] < numbers[j]){
                                    sum = sum + (numbers[i] -numbers[q]);
                                }
                                else {
                                    sum = sum + (numbers[j] -numbers[q]);
                                }
                            }
                            m = m-1;
                            break;
                        }
                        if(j == (L - 1) && numbers[j-1] < numbers[j]){
                            for(int q = i + 1; q < j; q++){
                                if (numbers[i] < numbers[j]){
                                    sum = sum + (numbers[i] -numbers[q]);
                                }
                                else {
                                    sum = sum + (numbers[j] -numbers[q]);
                                }
                            }
                            m = m-1;
                            break;
                        }
                    }
                }
           }
           System.out.println(sum);
        }

转载请注明出处,谢谢!

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pupil_in_GIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值