搭错车的小火柴

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
昨天(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 我只投了腾讯,虽然结果不好,但也能接受,毕竟是我太渣渣。

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

posted on 2018-03-22 19:38  搭错车的小火柴  阅读(1877)  评论(0编辑  收藏  举报