2019.9.9现场面
通用软件开发工程师
一面:
- 笔试题第一题思路
- 笔试题第二题思路
- 笔试题第三题思路
- 介绍实习所做的内容
- 介绍实习所用的技术栈
- 介绍nlp分类模型
- 为什么选用结巴分词?
- 有没有更好的选择?
- 训练词向量的过程
- 分类模型的流程(各部分功能)
- static有哪些作用?
- 说几种排序算法(快排、堆排、归并)
- 画图讲解堆排序的全过程
- 手撕代码1:求n!
- 手撕代码2:反转字符串中的每个小字符串并输出,输入的字符串中有下划线。
如abc_def_gh,反转后的结果cba_fed_hg - 手撕代码3:求二叉树所有叶子结点的和
- 手撕代码4:手写单例模式
二面:
- 说说你所有项目中的亮点有哪些
- 学校项目的整体结构设计
- 实习项目的整体结构设计
- 加盐hash加密算法的流程
- 为什么要用redis
- 有缓存情况下查询的流程
- 有缓存情况下修改的流程
- spring boot和spring 的区别
- aop如何实现
- 动态代理有几种
- 静态代理和动态代理的区别
- 动态代理与反射
- 项目如何进行分布式部署
- spring cloud如何进行配置
- 缓存命中率低会发生什么?
- 如何解决缓存穿透?
- 怎么样过滤掉不存在的key值?
- 布隆过滤器的原理
- gc的过程
- system.gc()是否可以立刻出发gc
- 如何立刻触发gc()
- 描述二叉树如何实现dps和bfs(非递归)
- dfs和bfs的区别
- 各自举出一个只能用dfs和bfs的场景
- 手撕代码1:
以下代码是否有问题?
有什么问题?
补充代码解决这个可能的问题。public class A{ int val; A(int x){this.val=x;} } A a=new A(1); A b=new A(1); HashMap<A,Integer> map=new HashMap<A,Integer>(); map.put(a,1); map.put(b,1);
- 手撕代码2:输出以1开始的n个正整数(1,2,...,n)的第k个排列。(要求回溯法)
三面:
- 介绍学校项目的内容
- 深度学习部分如何与后端项目结合
- nlp的步骤
- 分词的原理
- 使用wordtovec训练词向量的原因
- 有没有更好的选择?
- 下一步的科研计划
- 概率论学了什么内容
- 概率论如何与深度学习结合
- 神经网络学习的原理
- 反向传播算法
- 训练集和测试集的比例
- 分类模型的各步作用
- 为何要使用双向的循环神经网络
- 注意力机制层的作用
- 训练中如何调整注意力机制层的权值
- 为什么可以在nlp中使用卷积神经网络
- 全连接层如何连接
- softmax分类器的原理
- 科研项目使用的框架
- 实验中你调整了哪些参数
- 数据集的来源
- 分词前是否还需要额外预处理
- 你觉得还需要多少数据量合适
- 了解哪些机器学习方法
- 决策树和神经网络的区别
- SVM和神经网络的区别
- 深度学习相比机器学习的优点有哪些
- 深度学习自身存在哪些缺点
- 在项目里担任什么角色?
- 如何处理冲突?
- 实习时如何进行项目对接?
- 自己的优/缺点
- 10年内的工作规划
- 以后想要在哪个城市工作
- 校招选择工作时的标准