一、面经
算子开发相关
1.什么是 warp divergence?
在 warp 束中的线程在遇到分支的时候,如果同一个线程束中的线程执行的是不同的分支,会延迟执行,一次只执行走一个分支的,会增加执行时间,解决方法一个线程束的线程尽量走相同的分支,或者是使用一些比如条件运算符代替掉 if else 指令。
2.什么是 bank conflict,怎么解决?
bank conflict 是发生在同一个 block 中的线程访问共享内存的同一个 bank 的不同地址时发生的,同一时刻只允许访问 bank 的一个地址,会串行化执行,解决方法首先在设计的时候要避免差距是 32 的倍数,在一个 bank,其次是使用 padding 填充,还有就是不使用共享内存,直接交换寄存器的值。
3.怎样去最大限度的在算子中利用缓存?
首先相邻的数据最好访问相邻的数据,在访问全局内存的时候最好是连续的存储空间,可以合并访存,其次是对于反复使用的数据,放在共享内存中去访问。
普通后端
1.url 的组成内容
协议,如 http https,主机和端口号,主机可以是域名也可以是 IP 地址,资源路径在目标机器的路径和请求参数比如某个数据 id
2.url 请求的过程
要点,url 解析,DNS 解析,本地域名服务器,根域名服务器,顶级域名服务器,权威域名服务器,建立连接,tls,请求,响应,渲染。
3.后端请求的链路
客户端到内容分发网络,然后是负载均衡,然后到网关层面做路由,然后是 api 层面做参数验证这些,然后是业务服务层,最后是到达数据库缓存消息队列再返回。