【字节跳动面经】2020/4/2_字节跳动_商业变现_后端_第一次技术面试_75分钟

自我介绍

项目经历

问了论文和深度学习

论文的模型为什么这么设计

程序入口参数是什么,优化的参数是什么,遗传算法的过程

为什么用遗传算法不用贪心算法。。。

深度学习喂入图像前为什么要进行灰度处理

如何提取特征(这里扣了半天)你这个模型跟文字识别的模型有什么区别

网络框架的架构、参数如何确定的?

修改网络模型、修改参数的依据是什么、意义是什么?

java基础

强引用和弱引用有什么区别

算法题1:

青蛙跳,可以跳3、4、5个单位,给定长度为n的路径,青蛙最少跳多少步可以恰好跳到终点

(用了动态规划)你这个算法的时间复杂度和空间复杂度分别是多少

如果输出跳最少步数的路径,如何设计呢(尽量减少时空复杂度)

答:贪心算法,5步5步跳,当最后剩下6~9步时,可以有特定规则走完剩下的步数

如果只能跳3或5步呢,还能用这种方法吗

答:那就用二维数组,行数是n,每行维护跳到此处的路径,然后动态规划

空间复杂度太大,不好

算法题2:

不使用java内的任何数据结构和算法,将二叉树进行镜像翻转

用了递归,被问时间复杂度和空间复杂度

如果二叉树深度太大,本身二叉树结构就大,递归又太多次,可能会报哪些错误

oom和sof的区别是什么

被问程序当中的一些变量在jvm当中的存放地址(堆还是栈还是其他地方)

场景题1:

游戏中有1000个任务,每个任务只能完成一次,每完成一个任务加3~5分,游戏玩家是千万级

要求:玩家要时时知道自己完成任务得分的总排名

游戏系统要时时显示得分前100名的玩家

请设计方案

答:用数据库保存玩家id和分数。。。保证不了高并发场景的读写,且千万级数据的排序根本无法实现

答:用concurrenthashmap,key存储玩家id,value存储得分。。。千万级别的排序还是无法实现

答案:维护相应得分的玩家列表,0到5000分,每一个分数都维护一个list,当当前玩家分数升高时,从当前list移除,添加到相应得分的list

获取玩家排名时即当前list之前的所有list长度之和

前100名即从最高list往下输出100个玩家

 

你可能感兴趣的:(【字节跳动面经】2020/4/2_字节跳动_商业变现_后端_第一次技术面试_75分钟)