• 腾讯地图前端面试经验


    昨天(2018.3.21)去面试的,然而一面fail了,记录一下,希望自己接下来更认真的学习吧。

    下面前五道题是笔试部分,后面的是面试部分。笔试部分比较基础,面试部分几乎都是webGL、Threejs、图形学相关的东西。说实话,我是2017年七八月份看了一遍《WebGL编程指南》,主要是为了理解Threejs的内部机制,看完之后也没有用GLSL写过Shader,当时感觉Shader好难。而且我一个计算机科学与技术专业的孩子,的确看不懂图形学里面的一些东西,很吃力。用Threejs比较多。2017年十一月份之后就没怎么写js的,遗忘的比较严重,最近在重温《javascript高级程序设计》,感觉像是从头开始了。

    1用CSS实现上下左右居中。

    <style type="text/css">
                  body{     
                         margin:0;/*上右下左*/
                         padding:0; 
                         width:100%; 
                         height:100%; 
                  }
                  /*上下左右居中,ok*/
                  .box{
                         width: 100px;
                         height: 100px;
                         position:absolute;
                         left:0;
                         right:0;
                         top:0;
                         bottom:0;
                         margin:auto;
                         background-color: #3FAD72;
                  }
                  /*上下居中*/
                  . box1{
                      position: absolute;
                      top: 50%;
                      height: 200px;
                      transform: translateY(-50%);/*不知道高度的情况下可以用这一行代码*/
                      /*margin-top: -100px;  negative half of the height  知道高度的情况下,可以替换上面哪一行*/
                      background-color: #3FAD72;
                  }             
        /*左右居中*/ .box2{ position: absolute; left: 50%; width: 200px; margin-left: -100px; /* negative half of the height */ background-color: #3FAD72; } </style>

    2用观察者模式实现事件listener和trigger

    https://www.cnblogs.com/aoguren/p/4680692.html

    因为我不大了解观察者模式,就写了自己熟悉的两种事件监听方式。

    3介绍几种JS的跨域机制和原理

    http://blog.csdn.net/kongjiea/article/details/44201021

     我写的是jsonp,ajax和websocket。

    4,找出字符串中出现次数最多的字符,JS写个函数

    <script type="text/javascript">
               function charNum(){
                      var str = "zhaochucichuzuiduodezifu";
                         var o = {};
                         for (var i = 0, length = str.length; i < length; i++) {
                                var char = str.charAt(i);
                                if (o[char])  //char就是对象o的一个属性,o[char]是属性值,o[char]控制出现的次数
                                       o[char]++; //次数加1
                                else
                                       o[char] = 1; //若第一次出现,次数记为1  
                         }
                         var max = 0;
                         var maxChar = null;
                         for (var key in o) {
                                if (max < o[key]) {
                                       max = o[key]; //max始终储存次数最大的那个
                                       maxChar = key; //那么对应的字符就是当前的key
                                }
                         }
                         console.log("最多的字符是" + maxChar);
                         console.log("出现的次数是" + max);
               }                    
        </script>

    5用JS实现isprime,写个函数

    <script type="text/javascript">
    
               function isPrime(){
                      var num = 100;
                      for(var i=0;i<Math.sqrt(num);i++){
                             if(num%i == 0){
                                    console.log('false');
                                    return false;
                             }
                      }
                      console.log('true');
                      return true;
               }            
    
    </script>

    面试题:(一个小时)

    6.threejs组成一个场景需要上面元素?

    7.threejs中怎样让一个物体不受光照的影响。

    方法1:设置环境光为白色,emmissive也为白色。

    方法2:设置其他光线与物体的夹角为0.,怎么计算法向量?怎么计算夹角?

    8.webGL中,生成一个模型,比如立方体,八个顶点各自都是三个面公用的,怎么计算?

    9.讲讲片元着色器和和顶点着色器,以及一个object的渲染过程。

    10.怎么把屏幕坐标系转换为webgl坐标系?世界坐标系、本地坐标系、视觉坐标系之间的转换方法?还有什么坐标系?

    11.threejs的raycaster的原理是什么,除了intersect[ ]数组之外还会返回那些值?

    12.怎么优化3D页面的加载或者渲染速度?加载不出来怎么办?

    13.讲一下自己了解的js设计模式。

    14.webgl怎么生成一个模型?具体怎么实现?怎么定义坐标?index?着色器?

    15.3D裁切是什么?

    16.一个三维立方体其实都是由三角形拼起来的。

    最后面试结束的时候,我问了一下,的确他们组需要熟悉WebGL的前端,因为我了解,所以简历直接推到了这边,现在想想,也不能确定直推就是好事情。这样提醒了我,简历上不能啥都写呀。

    的确,面试结果就是 fail 了,额,不知道怎么评价这次的面试。可能我简历上写了WebGL的内容,然后面试官就问的多了些,可是宝宝真的都忘记了(捂脸)。毕竟自己没有用过只看过的东西在脑海里面也不会存在太久(就这样安慰自己)。不过 BAT 我只投了腾讯,虽然结果不好,但也能接受,毕竟是我太渣渣。

    我还会继续面试其他公司的,虽然渣,可是还是的多面试多总结多学习,看清自己,前进……

  • 相关阅读:
    Vue购物车项目
    总结前端面试过程中最容易出现的问题
    Node.js
    浏览器前端优化
    计算机课程
    谈谈对前端的理解
    MySQL
    阿里云Centos+Django+Nginx+uWSGI
    Windows + Apache + WSGI 部署Django
    Django积木块11 —— 缓存
  • 原文地址:https://www.cnblogs.com/catherinezyr/p/8625984.html
Copyright © 2020-2023  润新知