大三 字节搜索推荐算法实习生面经分享

无实习经历无面试经历,过来纯当体验以及试错了
通过笔试以及一轮面试进入夏令营,然后申请实习直接leader面
笔试题就不做分享了

一面 50min

流程:自我介绍——项目经历——基本知识——算法题

项目经历

因为有一个关于推荐的产品设计经历,面试官很感兴趣,主要问产品功能、如何设计、推荐的方式等等

做过nlp的相关项目,因此问了一下项目中的相关工作,主要是应用+复刻,自己微调训练

基本知识

Q:数据库中表连接的方式
A:自然连接、等值连接、外连接、内连接等

Q:自然连接与等值连接的区别
A:自然连接条件是相同属性字段,等值连接条件是相同的值

Q:左右外连接的区别
A:左表为null和右表为null的区别

Q:mysql索引
A:B+树

Q:B+树原理
A:非叶子节点的指向、叶子节点链表、关键字都在叶子节点中等等(现场没答上来,没有了解过)

Q:你会如何设计索引,复杂度多少
A:二叉树,单次检索复杂度O(logn)(不怎么了解索引,答得太简单了,还需要考虑到文件系统、磁盘等)

Q:线性回归和逻辑回归的区别
A:拟合线性方程,逻辑回归是非线性的sigmoid方程

心得:尽管面试算法方向,但是也考察工程能力,工程能力很重要!!!

算法题

Q:给一个排好序的数组,有负数,对数组中每个数求平方,在空间复杂度为O(1)的情况下求有多少个不同的平方数
A:双指针
写了很多的bug,但是面试官会很细心地一个个提示你,ilil

面试官不让你现场运行代码调试bug,只让你看!!!

二面leader面 40min

流程:算法题——基础知识

算法题

给一个排好序的数组以及t,找到t在数组中第一次出现的位置,如果没有则输出-1

简单的二分查找即可,一开始想直接STL lower_bound,但是忘了迭代器怎么用,所以手写了二分查找

leader让我运行了一下代码给他看结果,几个测试点都没有bug

Q:在算mid过程中可能出现的问题是l+r会超int,如何解决
A:改longlong

Q:能不用longlong吗
A:加法改减法

leader说还可以用一种更高级的二分查找但是他没展开

基础知识

Q:写了一个结构体,问大小,并说明原因
A:操作系统内容,数据对齐

Q:赋值指针为数组,问指针大小
A:就是地址大小,8位

Q:指针和引用的区别
A:指针开了实际的内存空间,引用只是一个标识符

如果回答不出的话面试官允许你现场写代码研究一下

Q:C++面向对象的问题,重载
A:方法名相同参数不同,返回类型不同(没学过C++面向对象)

Q:C和C++开动态内存空间的方法
A:C用malloc C++用new

Q:malloc和calloc的区别
A:malloc不能初始化,calloc初始化为空(没听说过calloc)

Q:释放动态内存空间的方法
A:free(从来没用过)

Q:java中int和integer的区别
A:int是基本数据类型,integer是类(需要展开,还有更多区别)

Q:bagging和boosting的区别
A:bagging的样本是有放回的取样,boosting的样本用的是同一个数据集,但是改变权重

心得:基础很重要!!!因为只写算法题从来没有接触过一些底层知识,但是企业级开发非常需要扎实的语言基础

你可能感兴趣的:(算法,面试,算法,c++)