一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1446|回复: 7
收起左侧

面NVIDIA你要知道些什么? NV三面 + 面经小结

[复制链接] |试试Instant~ |关注本帖
renjiayuan1314 发表于 2015-12-12 10:45:47 | 显示全部楼层 |阅读模式

2015(10-12月) 码农类 硕士 实习@Nvidia - 内推 - 技术电面 |Passfresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
三面:
二面见:
http://www.1point3acres.com/bbs/ ... adio%26sortid%3D311
和前两面完全不一样, manager问的,问的很深,很深,很深...

简历撸了一遍.... visit 1point3acres.com for more.
问了什么是defer rendering和forward rendering, 没答上来.
http://blog.csdn.net/bugrunner/article/details/7436600
0,
问有没有profiling app的经验,说说印象深的,事实上有很多, 但是不知道说什么, 随口说了一个z-fighting的issue.. 鍥磋鎴戜滑@1point 3 acres
然后就照着z-fighting问了z-buffer, 为什么会有z-fighting? 如果你是app开发者,只能用16bits的z-buffer,不能用24位的,现在有z-fighting,你怎么解?
place objects too close to each other. By creating a small offset between two objects. By (game) developer.
又问有没有其他的办法, 想了一会儿,根据The depth buffer contains depth values between 0.0 and 1.0 but it is non-linear, high precision when z is small and much less precision when z is far away想说"另一个技巧是尽可能把近平面设置得远一些。前面我们讨论过越靠近近平面的位置精度越高。所以我们移动近平面远离观察者,我们可以在椎体内很有效的提高精度。然而把近平面移动的太远会导致近处的物体被裁剪掉。所以不断调整测试近平面的值,为你的场景找出最好的近平面的距离。"-google 1point3acres
但是英语没有表达好.
1,
问完了z-buffer又问stencil buffer, 什么是stencil buffer, 我blablabla,然后问你stencil里面是什么样的数据结构, float?bool?int?其他?我说就是一个模板, 1就是通过,0就是不通过,应该是bool吧,他说那为什么是8位的stancil?是啊,当时脑子进水了,事实上是int的, z-buffer是float的.他给我解释了一下.
2,
vertex shader的作用, 问了world matrix和view matrix, 问了利用WV matrix可以做平移,旋转,scale,和skew四种,问其中哪一种是不能用3X3的矩阵做的,没答上来, 猜了一个skew.. 鍥磋鎴戜滑@1point 3 acres
问了用3x3做可以,为什么要用4x4的矩阵,答案是齐次坐标系.
. Waral 鍗氬鏈夋洿澶氭枃绔,
用google doc share了一个,写代码:. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
1, strcmp
2, 用malloc实现align_malloc,
http://www.geekcome.com/content-10-491-1.html
第二个没写完, 有点难.

我问了一个NV有没有用Tiled rendering? 他说有,解释了一下
总体感觉一般,没有1,2 面好,难度也不是同一个level的,说明还是太水,问深一点就答不上来了.
-google 1point3acres

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
已经拿到intern offer, 地里做的还是不错的, 找到了很多有用的资料.. 1point 3acres 璁哄潧
看到NV的比较少, 写一下我这三面的准备工作和总结,反馈地里,也算是攒RP吧.
估计RP应该早点攒的,要不然昨天的FB也不会挂掉...........心里一万分痛
其实都是我的笔记,一些复制黏贴的工作而已.. visit 1point3acres.com for more.


*****第一部分,计算机图形学:
How to use shader
Shader Debug + Precision
GLSL的如何传递数据
Vertex buffer & Vertex Array  
Transform 3D to 2D + Homogeneous Coordinates
为什么要用Homogeneous Coordinates
Primitive Types
glDrawArray VS glDrawElement
Texture Mapping/Wrapping/Filtering(+MIPMAP)/Units
Texture Swizzling
FBO+Multiple Render Targets. 1point3acres.com/bbs
Z-Buffer. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
z-fighting. from: 1point3acres.com/bbs
Stencil Buffer
Instancing. visit 1point3acres.com for more.
Face culling
Ring Buffer
Tessellation
Gimbal lock. 1point3acres.com/bbs
http://learnopengl-cn.readthedocs.org/zh/latest/
这个写的很好,中英都有,可以好好复习一下.

*****第二部分,计算几何学
Computational Geometry
Q: Dot product of vectors (output value)
Q: Cross Product (output vector)
点乘和叉乘是重点中的重点,其他的自己看着办吧,.1point3acres缃
这个写的很好,在图形的背景下讲几何,. 鍥磋鎴戜滑@1point 3 acres
http://dev.gameres.com/Program/Abstract/Geometry.htm

*****第3部分,设计模式
Singleton单例模式
Simple Factory Pattern(简单工厂模式)
Client-Server Model
Producer-Consumer

*****第4部分,操作系统
操作系统的基本功能和四个特性
kernel mode and user mode. visit 1point3acres.com for more.
用户栈和内核栈
内存池、进程池、线程池
Process VS Thread
进程间通信方式
进程的三种状态
进程死锁的条件
进程调度算法
线程同步与异步
线程同步方式+Android 线程通信
Android:handler、looper、MessageQueue机制.
ThreadLocal与其它线程同步机制的比较. Waral 鍗氬鏈夋洿澶氭枃绔,
线程的实现可以分为:用户级线程和内核级线程。
线程安全/不安全+Android UI Thread?
静态库与动态库
中断和轮询
makefile文件的作用是
fork() VS vfork()

. 1point 3acres 璁哄潧*****第5部分,C语言
Intrinsic function
C/C++内存分类
Macro
如何引用一个已经定义过的全局变量?答:extern
C中的malloc和C++中的new有什么区别
volatile?. 1point3acres.com/bbs
局部变量能否和全局变量重名?  
变长参数
aligned_malloc

*****第6部分, C++高级特征
重载(overloaded)、内联(inline)、const 和virtual是C++独有而C不具有的四种机制。其中重载和内联机制既可用于全局函数也可用于类的成员函数,const 与virtual机制仅用于类的成员函数.
0, basic knowledge. more info on 1point3acres.com
1. What is difference between C and C++?
2. What is a class and object?
3. What do you mean by C++ access specifiers?. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
4. What are the basics concepts of OOP?
(1)        Objects & Class: public, private, protected
(2)        Encapsulation:
(3)        Inheritance: A:public B
(4)        Abstraction & Interface: virtual function
(5)        Polymorphism:
5, Templates

1, overloaded重载.
2, 运算符重载(overloaded)
3, override覆盖
4, 内联(inline)
5, Constructors, Destructors and Virtual function
6, mutable


*****第7部分,Bit manipulation
0, Basic function:
MSB: Most Significant Bit; LSB: Least Significant Bit;
getBit
setBit
clearBit
updateBit
int upateBit(int num, int I, Boolean bitIs1){. more info on 1point3acres.com
        int value = bitIs1 ? 1 : 0;
        int mask = ~(1<<i);                                //clear first
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴        return (num & mask) | (value << i); 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
}
Check power of 2/how many 1s in n.
如果是power of 2,说明n的32位里面只有一位是1, if(n&(n-1)==0)去check.. Waral 鍗氬鏈夋洿澶氭枃绔,
计算有多少个1用n=(n&(n-1),每做一次, n里面最右边会少一个1, 用来计算n里有几个1.
上面全是一个int里面的操作, 比较好理解. 如果超出了1个int,看下面bitmap
技巧:. 1point3acres.com/bbs
去掉最后一位(101101->10110)                x>>1
在最后加一个0(101101->1011010)        x<<1
在最后加一个1(101101->1011011)        (x<<1)+1.鐣欏璁哄潧-涓浜-涓夊垎鍦
把最后一位变成1(101100->101101)        x | 1
把最后一位变成0(101101->101100)        (x | 1) - 1
最后一位取反(101101->101100)                                x ^ 1. 1point3acres.com/bbs
右数第k位取反(101101->101001,k=3)                        x ^ (1 << (k-1))
取末三位(1101101->101)                                x & 7
取末k位(1101101->1101,k=5)                                x & ((1 << k)-1)
把末k位变成1(101001->101111,k=4)                        x | ((1 << k)-1)
末k位取反(101001->100110,k=4)                        x ^ ((1 << k)-1). 鍥磋鎴戜滑@1point 3 acres
把右边连续的1变成0(100101111->100100000)                x & (x+1)
把右起第一个0变成1(100101111->100111111)                x | (x+1)
把右边连续的0变成1(11011000->11011111)                x or (x-1) 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
取右边连续的1(100101111->1111)                        (x^(x+1)) >> 1
去掉右起第一个1的左边(100101000->1000,树状数组)        x & (x ^ (x-1))
应用, 高低位交换. more info on 1point3acres.com
应用, 二进制逆序
Big-endian/Little-endian
big-endian the most-significant byte of a word is stored at lower memory addresses.
Little-endian(小端序)
数据的高位字节存放在地址的高端, 低位字节存放在地址低端
bool IsBigEndian(). Waral 鍗氬鏈夋洿澶氭枃绔,
{. 1point 3acres 璁哄潧
    union
    {. 鍥磋鎴戜滑@1point 3 acres
        unsigned short a ;
        char b ;
    } c;
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
    c.a =0x0102 ;.鐣欏璁哄潧-涓浜-涓夊垎鍦

    if(c.b ==1)
        return true ;
    else-google 1point3acres
        return false ;
}
如何转换, 见上面应用, 二进制逆序. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

Bit-map
理解为本来可以放数组里面存着的, 但是要O(n)的空间, 现在放在bit里存着.
优点:省空间, 效率高,
缺点:整数(负数也可,另外用一个bitmap专门存负数绝对值), . visit 1point3acres.com for more.
应用: (心得,bit下标就是那个数). 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
Bloom filter
Bloom filter可以看做是对bit-map的扩展




重要性按照
1>7>5>6>4>2>3
列出来的是要cover到的topic,但是每个方面要多深,请参照我的第三面.
以上纯属个人经验谈.... 1point3acres.com/bbs



最后的最后,
面经很重要!面经很重要!面经很重要!. Waral 鍗氬鏈夋洿澶氭枃绔,

. more info on 1point3acres.com

评分

7

查看全部评分

 楼主| renjiayuan1314 发表于 2016-2-16 04:51:57 | 显示全部楼层
beer 发表于 2016-2-16 04:47
太专业了,Graphics方向的。话说,LZ是new graduate还是有过GPU方面工作经验的人士呢?

都是. 有这方面工作经验的new grad
回复 支持 1 反对 0

使用道具 举报

 楼主| renjiayuan1314 发表于 2015-12-29 06:04:51 | 显示全部楼层
卧槽,过了那么久一个回复也没有,没没人加大米....
回复 支持 反对

使用道具 举报

calalia 发表于 2015-12-29 06:21:59 | 显示全部楼层
我来膜拜一下. more info on 1point3acres.com
吓哭. 鍥磋鎴戜滑@1point 3 acres
吓哭
吓哭

. 鍥磋鎴戜滑@1point 3 acres
回复 支持 反对

使用道具 举报

wangxy 发表于 2015-12-29 07:50:51 | 显示全部楼层
過來支持一下,畢竟nvdia我的大dream
回复 支持 反对

使用道具 举报

 楼主| renjiayuan1314 发表于 2016-2-11 13:17:38 | 显示全部楼层
关于deferred rendering这里写的太好了, learnopengl这套教程真是深入浅出, 覆盖了graphics里面几乎所有的面试题. 太赞了, 最近在准备别的面试, 所以又过了一遍. 顺便回来看看nv的这三次面试, 感觉应该会风格比较接近. 哈哈
http://learnopengl-cn.readthedocs.org/zh/latest/05%20Advanced%20Lighting/08%20Deferred%20Shading/
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
问了利用WV matrix可以做平移,旋转,scale,和skew四种,问其中哪一种是不能用3X3的矩阵做的,没答上来, 猜了一个skew.猜错了,答案应该是 translation, 教程里也有,其次坐标的两个作用是1, translation, 2 perspective division.

希望我明后天点面顺利, blessing.
回复 支持 反对

使用道具 举报

beer 发表于 2016-2-16 04:47:44 | 显示全部楼层
太专业了,Graphics方向的。话说,LZ是new graduate还是有过GPU方面工作经验的人士呢?
回复 支持 反对

使用道具 举报

笑眯眯的白云 发表于 2016-11-9 02:45:42 | 显示全部楼层
感谢楼主! 看我私信!
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-10 21:32

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表