字节跳动一面(后端开发)
1 说一说mysql数据库优化
优先进行索引优化,然后解决慢查询,
慢查询
1 索引没起作用。字段没建立索引,或者是索引没有起作用
2 数据库结构不合理
3 分解关联查询 将大查询分成多个小查询
4 优化limit分页
2 怎么找到慢查询?
去分析慢查询日志,找出慢查询的sql
看运行速度从运行时间短慢来找出慢查询的sql
3 索引怎么创建?
create index 命令并为索引指定它的域
4 索引具体优化的方式?
1 优化查询性能,使用explain关键字
2 mysql是开放的 改变内部变量索引缓冲区长度
手撕代码
1 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
有思路 没打出来
题目中给了我们先序遍历和中序遍历;在二叉树的前序遍历中,第一个数字总是树的根结点的值。但在中序遍历序列中,根结点的值在序列的中间,左子树的结点的值位于根结点的值的左边,而右子树的结点的值位于根结点的值的右边。因此我们需要扫描中序遍历序列,才能找到根结点的值。
题目给出的前序遍历序列的第一个数字1就是根结点的值。扫描中序遍历序列,就能确定根结点的值的位置。根据中序遍历的特点,在根结点的值1前面的3个数字都是左子树结点的值,位于1后面的数字都是右子树结点的值。
由于在中序遍历序列中,有3个数字是左子树结点的值,因此左子树总共有3个左子结点。同样,在前序遍历的序列中,根结点后面的3个数字就是3个左子树结点的值,再后面的所有数字都是右子树结点的值。这样就在前序和中序遍历的两个序列中,分别找到了左右子树对应的子序列。
我们已经分别找到了左右子树的前序和中序遍历,我们可以用同样的方法分别去构建左右子树,即递归实现。
附带详解https://blog.csdn.net/u013132035/article/details/80519895
二叉搜索树的第k个结点
限定语言:Javascript_V8、Python、C++、Javascript、Php、C#、Java
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
class Solution {
private int res=0,count=0;
public int kthLargest(TreeNode root, int k) {
rec(root,k);
return res;
}
public void rec(TreeNode root,int k){
if(root.right!=null){
rec(root.right,k);
}
if(++count==k){
res= root.val;
return;
}
if(root.left!=null){
rec(root.left,k);
}
}
}
说一下解题思路?
先来个层次遍历二叉树,得到所有的节点的值,然后排序,取到第k大的节点的值
这个只是值,而不是节点,
想办法得到具体的节点信息,
重新遍历下该二叉树,
得到节点值为该值的节点,
然后返回
最后问一个io是什么?
我知道的是影响mysql速度的主要在I/O成本和CPU成本的消耗上
I/o就是数据存储在硬盘上,我们想要进行某个操作需要将其加载到内存中,这个过程的时间被称为I/O成本,我能想起来的就这些了
你经常敲代码吗框架怎么样
最近秋招,经常刷题,敲代码能力还可以,框架学了Spring Springmvc Mybatis
你有什么想问我的吗?
答:我想知道我投递的是后端开发,现在给我的邮件写的是ios 安卓开发 我有点疑惑,还有有机会转正吗?
Ios安卓不了解没关系 无经验也可以 我们会培训 转正这个得看实习人数和职位空缺数,还是有一些机会的
嗯今天面试先到这里等邮件通知
好的老师再见