博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字节跳动后端开发一面
阅读量:4073 次
发布时间:2019-05-25

本文共 2667 字,大约阅读时间需要 8 分钟。

总体来说我这次和网上大家的问题不太一样,侧重数据库操作系统网络的考察,算法题只考了一道,还问了我一点ML的东西。

面试官当时就说我基础不太好。总共面了45分钟。已凉。

1. 实习经历 介绍

2. 机器学习:

  • logistic回归和决策树的区别
  • SVM介绍下
  • 梯度下降
  • 怎么防止陷入局部最优

3. 操作系统

  • 线程切换的时候介绍下操作系统做了什么,详细点 

上下文切换的开销

当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程。

中断上下文:在中断中执行时依赖的环境,就是中断上下文(不包括系统调用,是硬件中断)

进程上下文:当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称为该进程的上下文

  • 硬中断 软中断的区别

用语言编写的指令将正在运行的程序中断是软中断,而断电或是重启等属于硬中断。一般是硬件请求引起的,用来通知操作系统系统外设状态变化。

软中断发生的时间是由程序控制的,而硬中断发生的时间是随机的;

软中断是由程序调用发生的,而硬中断是由外设引发的;

硬件中断处理程序要确保它能快速地完成它的任务,这样程序执行时才不会等侍较长时间。硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。软中断并不会直接中断CPU。也只有当前正在运行的代码(或进程)才会产生软中断。

  • Linux中查询日志有什么方法

4. 网络

  • TCP UDP属于什么层
  • 为什么TCP是可以保证可靠传输? TCP是面向连接的可靠传输,通过校验和,重传控制,序号标识,滑动窗口,确认应答实现可靠传输
  • 建立TCP连接之前怎么识别不同的连接? 
  • 长连接短连接的区别?
  • 拥塞控制算法

5. 数据库

  • 纵表横表的区别

纵表,其特点是行数多,字段少。纵表在使用时由于行数多,统计用户数或对用户进行分档时还需要进行GROUP BY 操作,性能低,且操作不便,为提高性能,通常根据需要将纵表进行汇总,形成横表,

 横表

优点:一行表示了一个实体记录,清晰可见,一目了然。

缺点:如果现在要把这个表加一个字段,那么就必须重建表结构。

纵表

优点:如果现在要把这个表加一个字段,只需要添加一些记录。

缺点:数据描述不是很清晰,而且会造成数据库数据很多。另如果需要分组统计,要先groupby,较繁琐。

结论:应该把不容易改动表结构的设计成横表,把容易经常改动不确定的表结构设计成纵表。 

  • 索引
  • 内连接 外连接 左连接 右连接
  • 常用的数据库引擎

MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复。MyISAM的索引方式也叫做“非聚集”的。

InnoDB也使用B+Tree作为索引结构,但具体实现方式却与MyISAM截然不同。

第一个重大区别是InnoDB的数据文件本身就是索引文件。从上文知道,MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。

这种索引叫做聚集索引。因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。

第二个与MyISAM索引的不同是InnoDB的辅助索引data域存储相应记录主键的值而不是地址。换句话说,InnoDB的所有辅助索引都引用主键作为data域。

  • 联合索引和最左前缀原则

联合索引(复合索引)

首先介绍一下联合索引。联合索引其实很简单,相对于一般索引只有一个字段,联合索引可以为多个字段创建一个索引。它的原理也很简单,比如,我们在(a,b,c)字段上创建一个联合索引,则索引记录会首先按照A字段排序,然后再按照B字段排序然后再是C字段,因此,联合索引的特点就是:

第一个字段一定是有序的
当第一个字段值相等的时候,第二个字段又是有序的,比如下表中当A=2时所有B的值是有序排列的,依次类推,当同一个B值得所有C字段是有序排列的

| A | B | C | 

| 1 | 2 | 3 | 
| 1 | 4 | 2 | 
| 1 | 1 | 4 | 
| 2 | 3 | 5 | 
| 2 | 4 | 4 | 
| 2 | 4 | 6 | 
| 2 | 5 | 5 |

其实联合索引的查找就跟查字典是一样的,先根据第一个字母查,然后再根据第二个字母查,或者只根据第一个字母查,但是不能跳过第一个字母从第二个字母开始查。这就是所谓的最左前缀原理。

  • 左连接 右连接 内连接

A left join(左连接)包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。 right join(右连接),即包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。

而full join(全连接),左右表中所有记录都会选出来。全连接 full join 或者 full outer join,为二个表中的数据都出来,内连接 inner join 或者 join;它为返回字段ID同时存在于表中的记录,交叉连接(完全连接)cross join 不带 where 条件的

7. 算法

一个无序数组,数值不连续。用最小的时间复杂度找到最左边的“坑”。

我上来就想到用快排排序然后遍历,就是O(nlgN)。但是应该还有线性的,就想到用桶排序 ,就是一个hashmap,然后对桶从左往右遍历。

public class Main {    public int findNum(int[] nums){        int n = nums.length;        int min = nums[0], max = nums[0];        for(int i=0;i

 

 

转载地址:http://difni.baihongyu.com/

你可能感兴趣的文章
我刚刚才完全清楚GPS模块的那根杆子是怎么固定安装好的
查看>>
去github里面找找也没有别人无人机+SLAM的工程
查看>>
PX4与ROS关系以及仿真控制(键盘控制无人机)
查看>>
我对无人机重心高度的理解
查看>>
现在明白为什么无名博客里好几篇文章在讲传感器的滞后
查看>>
PCB我感觉也可以找个几天的视频教程看看,我感觉看视频教程还是很有感觉的。
查看>>
我院子里GPS还是有卫星信号的,只是只有11 12颗左右
查看>>
无人机不装脚架的好处就是降落时会比较稳,不怕倾斜侧翻。
查看>>
实际我看Pixhawk定高模式其实也是飞得很稳,飘得也不厉害
查看>>
我现在发现开课吧的智能无人机课程里面也讲GAAS
查看>>
Pixhawk解锁常见错误
查看>>
Pixhawk无人机教程-8.1 在Mission Planner中下载与分析日志(转载)
查看>>
pixhawk 用MissionPlanner查看日志的一些总结(我个人的)
查看>>
现在意识到了研究定位的重要性和意义
查看>>
乐迪遥控器可以显示GPS卫星数,还有电压回传。
查看>>
我个人觉得pixhawk合适的飞行模式设置顺序
查看>>
飞定高的无人机还是用双回中遥控器好一些
查看>>
手不要碰高速运行的浆,会被浆打出血
查看>>
我发现无人机把Pixhawk2.4.8换成pixhawk4 不需要换很多东西,也不需要再焊什么东西
查看>>
**当你做东西卡住的时候,也是在提醒你需要花时间沉下来深入学东西了,不然做不出来的
查看>>