最新字节跳动面试题之堆排序
前言:字节是真的很看重算法的企业,如果你算法基础不好,想要进字节不许的加强训练
1.先概述一下堆排序的思想,然后实现一下堆排序。
- 堆排序是一个令人容易忘记的排序,你可能会对快排的partition记忆深刻,但是要你写出堆排序的代码还是得记忆一下关键点。
- 1.初始化堆(将数组结构调整为堆大的要求),2.堆顶和数组末尾进行对调。3.继续初始化堆。4.重复直到数组有序。
- 时间复杂度为:nlog(n),空间复杂度为o(1).
- 思路总结:初始化的时候,需要从最末尾的一个非叶子节点从上进行堆化,堆化的核心是要求以该节点为根节点的子树满足堆的要求,首尾交换之后-需要从根节点开始向下进行堆化。
- 代码:
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;class Main{public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {int []nums=new int[]{3,43,23,23,40,23,234,-234,0,0,0,213,231,8,9,0,6,5,3,2,2,4,5,6};HeapSort(nums);System.out.println(Arrays.toString(nums));}public static void HeapSort(int nums[]){int len = nums.length;//1.先进行初始化堆initHeapSort(nums,len);// 每次进行将堆顶和末尾进行交换for(int i = len-1;i>=0;i--){//首末进行交换swap(nums,0,i);len--;//从根位置进行堆调整heapfing(nums,0,len);}}public static void initHeapSort(int nums[],int len){//初始化应该从非叶子节点向上进行初始化for(int i = len/2-1;i>=0;i--){heapfing(nums,i,len);}}// 对i节点为根的子树进行判断是否满足堆的性质,从根往下进行调整public static void heapfing(int nums[],int i,int len){// 进行堆调整int left = i*2;int right = i*2 +1;int MaxIndex = i;if(left<len&&nums[left]>nums[MaxIndex]){MaxIndex = left;}if(right<len&&nums[right]>nums[MaxIndex]){MaxIndex = right;}//判断是否要进行交换if(i!=MaxIndex){swap(nums,i,MaxIndex);//对交换之后的子树进行判断是否满足堆的性质heapfing(nums,MaxIndex,len);}}public static void swap(int []nums,int i,int j){int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}
}
2.Mysql中delete操作的过程
- 个人感觉和update操作一样。
3.Redis中哨兵?
- 回答的不是很好。
4.Http协议的报文结构
- 这个作为后端开发工程师应该不陌生。
5.Linux中是如何跟根据文件序号找到文件的?
6.Linux中国select、eqoll、qoll的区别和联系
7.总结
- 面试需要尽可能体现你会的东西,要有项目可以讲,要是面试官没有项目点可以问,他就会问语言、计算机基础,不要慌。
最新字节跳动面试题之堆排序相关推荐
- 最新字节跳动面试题与岗位层级,绩效考核制度介绍
最新字节跳动面试题与岗位层级,绩效考核制度介绍 1.算法题一:无序数组的中位数 (快排思想O(N) 时间复杂度) 2.算法题二:给一数组,让你找一对满足i 3.算法题三: 给一数组,让你找一对满足i& ...
- 最新字节跳动面试题与答案: 无序数组的中位数 (快排思想O(N) 时间复杂度)
最新字节跳动面试题与答案 1.算法题一:无序数组的中位数 (快排思想O(N) 时间复杂度) package com.lightsword.leetcodeproblemsimport org.juni ...
- 字节跳动java笔试题目_牛客网--字节跳动面试题--特征提取
牛客网--字节跳动面试题--特征提取 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 来源 链接:特征提取 来源:牛客网 题目 ...
- 编程实践系列: 字节跳动面试题
字节跳动面试题 面试3轮技术面+1轮HR 整体分三大块: 项目经验 计算机基础 编程题(每轮一题) 项目经验 架构+业务 做了什么核心设计优化 解决了什么难题 体现思考 业务理解 架构设计能力 项目需 ...
- 牛客网--字节跳动面试题--雀魂启动
牛客网--字节跳动面试题--雀魂启动 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 来源 链接:雀魂启动 来源:牛客网 题目 ...
- 2018 java 字节跳动笔试题
想进字节跳动同学注意了,这里是修真院面试笔记整理,那么这里就给大家分享一下 [2018 java 字节跳动笔试题] 一面 实现算法:求全排列. 输入:一个整数n 输出:从1至n所有数字组成的全排列 简 ...
- 【字节跳动面试题】赛马问题 64匹马8个跑道最少几次赛出最快的4匹马
2020年1月 字节跳动研发岗实习面试题 文章目录 赛马问题 一. 64匹马8个跑道 二. 36匹马6赛道 赛马问题 一. 64匹马8个跑道 64匹马8个跑道(不计时),问最少要比多少次,才能知道最快 ...
- 2020年字节跳动面试题
字节跳动一面面试题: 自我介绍 聊聊项目,时间大概15种左右,面试官会根据项目的一些设计点来提问,提前做好准备,别自己坑了自己 分布式锁是锁住一部分还是整个系统,既然是锁住整个,为什么不用消息队列? ...
- 2021年最新字节跳动Android面试真题解析
这里概括一下给同伴们的几个小建议: 1.把自身的技能练扎实, 2.找跟你过往经历匹配度非常高的岗位, 3.面试的时候充分展现你个人的软实力硬实力. 关于内推的(同公司应该是hr伙伴的良心建议): 1. ...
- 2021大厂字节跳动笔试题(含答案)
2021字节跳动web工程师笔试题 第一题 [ {num: 12, city: 'beijing'}, {num: 56, city: 'shanghai'}, {num: 167, city: 'g ...
最新文章
- Windows下利用TortoiseSVN搭建本地SVN服务器
- Angular 8.0.0-beta.5 发布,Web 前端框架
- UNIX环境高级编程第二版_扫描 版笔记
- 寒假每日一题(提高组)【Week 4 完结】
- Apache-tomcat
- C++ vector容器类型 (摘自漫步云端的博客)
- 关于工厂模式---转发
- Hadoop Ecosystem解决方案---数据仓库
- 各种initcall的执行先后顺序(module_init、postcore_initcall、arch_initcall、subsys_initcall、 fs_initcall)【转】...
- php获取xml中的数据格式_php-从xml文件获取数据
- IOS开发常用插件(二)
- 员工管理的html页面,员工管理.html
- war包还原成项目_war包反编译成整个java项目
- vs2005启动不了,手把手教你修复它
- Tracepro中up vector和normal vector的定义2
- 大流量高并发互联网应用实践在线峰会:资料汇总(更新ing~)
- 如何系统地学习linux
- Impala入门操作
- 电商网站的mongodb设计
- 网络创业者莱恩-福克斯:最后一分钟的奇迹