算法

  1. 一个整形数组中除了两个数字之外,其他都出现了两次,请找出两个只出现一次的数字

1.树的后序排列
2.判断数组是否是 树的后序遍历结果

链表

数组

1.把数组排成最小的数
2.找出数组中重复的超过一般的数字

其他问题

mysql

1:MySQL 的逻辑架构了解吗?

2:谈一谈 MySQL 的读写锁

3:MySQL 的锁策略有什么?

4:数据库死锁如何解决?

5:事务是什么?

6:事务有什么特性?

7:MySQL 的隔离级别有哪些?

8:MVCC 是什么?

9:谈一谈 InnoDB

10:谈一谈 MyISAM

11:谈一谈 Memory

12:查询执行流程是什么?

13:VARCHAR 和 CHAR 的区别?

14:DATETIME 和 TIMESTAMP 的区别?

15:数据类型有哪些优化策略?

16:索引有什么作用?

17:谈一谈 MySQL 的 B-Tree 索引

18:了解 Hash 索引吗?

19:什么是自适应哈希索引?

20 :什么是空间索引?

21:什么是全文索引?

22:什么是聚簇索引?

23:什么是覆盖索引?

24:你知道哪些索引使用原则?

25:索引失效的情况有哪些?

26:如何定位低效 SQL?

27:SHOW PROFILE 的作用?

28:trace 是干什么的?

29:EXPLAIN 的字段有哪些,具有什么含义?

30:有哪些优化 SQL 的策略?

31:MySQL 主从复制的作用?

32:MySQL 主从复制的步骤?

作者:程序员吴师兄
链接:https://www.zhihu.com/question/452184164/answer/1923347183
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

解答

树的后序排列

package xuelongjiang.question;/**** 树的后序排列* @author xuelongjiang*/
public class AfterOrderTree {public void traverse(BinaryTreeNode node) {if (node == null) {return ;}if (node.left != null) {traverse(node.left);traverse(node.right);}System.out.print( node.vlaue+ ",");}public static void main(String[] args) {AfterOrderTree afterOrderTree = new AfterOrderTree();afterOrderTree.test1();afterOrderTree.test2();afterOrderTree.test3();afterOrderTree.test4();}/*** 完整的二叉树*         10*     6       14*  4    8   12   16** 期望输出: 4 8 6 12 16 14 10*/public void test1() {BinaryTreeNode node3 = new BinaryTreeNode(4, null, null);BinaryTreeNode node5 = new BinaryTreeNode(8, null, null);BinaryTreeNode node1 = new BinaryTreeNode(6, node3, node5);BinaryTreeNode node4 = new BinaryTreeNode(12, null, null);BinaryTreeNode node6 = new BinaryTreeNode(16, null, null);BinaryTreeNode node2 = new BinaryTreeNode(14, node4, node6);BinaryTreeNode node = new BinaryTreeNode(10, node1, node2);System.out.println("test1:");traverse(node);// 前序输出树System.out.println("-------------------");}// 半完整的二叉树// 10,14, 12, 6, 4/*** 半完整的二叉树*         10*     6       14*  4       12** 期望输出: 4 6  12 14 10*/public void test2() {BinaryTreeNode node3 = new BinaryTreeNode(4, null, null);BinaryTreeNode node4 = new BinaryTreeNode(12, null, null);BinaryTreeNode node1 = new BinaryTreeNode(6, node3, null);BinaryTreeNode node2 = new BinaryTreeNode(14, node4, null);BinaryTreeNode node = new BinaryTreeNode(10, node1, node2);System.out.println("test2:");traverse(node);System.out.println("-------------------");}//只有根节点// 10public void test3() {System.out.println("test3:");BinaryTreeNode node = new BinaryTreeNode(10, null, null);traverse(node);System.out.println("-------------------");}//空树// nullpublic void test4() {System.out.println("test4:");traverse(null);System.out.println("-------------------");}}

一个整形数组中除了两个数字之外,其他都出现了两次,请找出两个只出现一次的数字

package xuelongjiang.question;import javax.swing.*;/*** 一个整形数组中除了两个数字之外,其他都出现了两次,请找出两个只出现一次的数字** @author xuelongjiang*/
public class ArrayFindOneNumber {public Integer[] findNumber(int[] arrays) {Integer[] findNum = new Integer[2];if (arrays == null || arrays.length == 0) {return  findNum;}int resultORX = arrays[0];for (int i = 1; i < arrays.length; i++ ) {resultORX = resultORX ^ arrays[i];}int bitIndex = oneBitIndex(resultORX);findNum[0] = 0;findNum[1] = 0;for (int number : arrays) {if (isBit(number, bitIndex)) {findNum[0] = number ^ findNum[0];} else {findNum[1] = number ^ findNum[1];}}return findNum;}public int oneBitIndex(int number) {int index = 0;while ((number & 1) == 0 && index < 32) {number >>>=1;index++;}return index;}public boolean isBit(int number, int oneBitIndex) {number = number >>> oneBitIndex;return (number & 1) == 1;}/*** 个整形数组中除了一个数字之外,其他都出现了两次* @param arrays* @return*/public Integer findNumber1(int[] arrays) {Integer findNum = null;if (arrays == null || arrays.length == 0) {return findNum;}findNum = arrays[0];for (int i = 1; i < arrays.length; i++) {findNum = findNum ^ arrays[i];}return findNum;}public static void main(String[] args) {ArrayFindOneNumber findOneNumber = new ArrayFindOneNumber();findOneNumber.test1();findOneNumber.test2();findOneNumber.test3();findOneNumber.test4();}public void test1() {int[] arrays  = {1,2,3,4,5,1,2,3,4,5,6,7,6};Integer number = findNumber1(arrays);System.out.println("test1:"  +  (7 == number));}public void test2() {int[] arrays  = {1,2,3,4,5,1,2,3,4,5,6,7,6, 8};Integer[] number = findNumber(arrays);System.out.println("test2:"  +  (7 == number[0] && 8 == number[1]));}public void test3() {int[] arrays  = {1,2,3,4,5,1,2,3,4,5,7,0};Integer[] number = findNumber(arrays);System.out.println("test3:"  +  (7 == number[0] && 0 == number[1]));}public void test4() {int[] arrays  = {};Integer[] number = findNumber(arrays);System.out.println("test4:"  +  (null == number[0] && null == number[1]));}
}

判断数组是否是 树的后序遍历结果

package xuelongjiang.question;/*** 24题** 判断数组是否是 树的后序遍历结果** @author xuelongjiang*/
public class ArrayIsTreeAfterOrder {public boolean verifyAfterOrder(int[] arrays, int start, int end) {if (arrays == null || end < 0 ||  start > end) {return false;}if (start == end) {return true;}int root = arrays[end];int i = start;// 左序列for (; i <= end; i++) {if (root < arrays[i]) {break;}}//右序列int j = i;for (; j <= end; j++) {if (root > arrays[j]) {return false;}}boolean left = true;if (i > start) {left = verifyAfterOrder(arrays, start, i -1 );}boolean right = true;if (i < end ) {right = verifyAfterOrder(arrays, i,end - 1);}return left && right;}public static void main(String[] args) {ArrayIsTreeAfterOrder arrayIsTreeAfterOrder = new ArrayIsTreeAfterOrder();arrayIsTreeAfterOrder.test1();arrayIsTreeAfterOrder.test2();arrayIsTreeAfterOrder.test3();}//期望true 整棵树public void test1 () {int [] arrays = {5, 7, 6, 9, 11, 10, 8};System.out.println("test1:" +  verifyAfterOrder(arrays, 0, 6));}//期望true 半棵树public void test2 () {int [] arrays = {5, 7, 6, 10, 8};System.out.println("test2:" +  verifyAfterOrder(arrays, 0, 4));}//期望falsepublic void test3 () {int [] arrays = {5, 9, 6, 7, 11, 10, 8};System.out.println("test3:" +  verifyAfterOrder(arrays, 0, 6));}}

把数组排成最小的数

package xuelongjiang.question;import java.util.Arrays;
import java.util.Comparator;/*** 把数组排成最小的数* @author xuelongjiang*/
public class ArrayMinNumber {public String printMinNumber(int[] numbers) {if (numbers == null || numbers.length == 0) {return "";}String[] strArray = new String[numbers.length];for (int i = 0; i < numbers.length; i++) {strArray[i] = String.valueOf(numbers[i]);}Arrays.sort(strArray, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return (o1 + o2).compareTo(o2 + o1);}});StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < strArray.length; i++) {stringBuilder.append(strArray[i]);}return stringBuilder.toString();}public static void main(String[] args) {ArrayMinNumber arrayMinNumber = new ArrayMinNumber();arrayMinNumber.test1();arrayMinNumber.test2();arrayMinNumber.test3();arrayMinNumber.test4();}public void test1() {int [] numbers = {3, 321, 32};String result = printMinNumber(numbers);System.out.println("test1:" + result + result.equals("321323"));}public void test2() {int [] numbers = {};String result = printMinNumber(numbers);System.out.println("test2:" + result + result.equals(""));}public void test3() {int [] numbers = {1, 0, 11};String result = printMinNumber(numbers);System.out.println("test3:" + result + result.equals("0111"));}public void test4() {int [] numbers = {456,36, 32};String result = printMinNumber(numbers);System.out.println("test4:" + result + result.equals("3236456"));}}

找出数组中重复的超过一般的数字

package xuelongjiang.question;/*** 找出数组中重复的超过一般的数字* @author xuelongjiang*/
public class ArrayMoreThanHalf {public int moreThanHalf(int[] array) {if (array == null || array.length == 0) {return -1;}int number = array[0];int times = 1;for (int i = 1; i < array.length; i++) {if (array[i] == number) {times = times + 1;} else if(times > 0){times = times - 1;} else {times = 1;number = array[i];}}if (isHalf(array, number)){return number;}return -1;}public boolean isHalf(int[] array, int number)  {int times = 0;for (int i = 0; i < array.length; i++) {if (array[i] == number) {times = times + 1;}}boolean isHalf = true;if (times*2 < array.length) {isHalf = false;}return isHalf;}public static void main(String[] args) {ArrayMoreThanHalf thanHalf = new ArrayMoreThanHalf();thanHalf.test1();thanHalf.test2();thanHalf.test3();thanHalf.test4();}public void test1() {int[] array = {1, 2, 3, 2, 2, 2, 5, 4, 2 };System.out.println("tets1:" + moreThanHalf(array));}public void test2() {int[] array = null;System.out.println("tets2:" + moreThanHalf(array));}public void test3() {int[] array = {};System.out.println("tets3:" + moreThanHalf(array));}public void test4() {int[] array = {1};System.out.println("tets4:" + moreThanHalf(array));}}

testtesttesttest相关推荐

  1. 调整html css表格位置,调整表格中的列宽(CSS / HTML)

    我一直在尝试将移动设备上的列宽变为50%,但我尝试过的所有内容都无效.这是css. @media (max-width: 768px) { #customTable tbody { float: le ...

  2. win7怎么运行linux,win7系统运行linux shell脚本的操作方法

    很多小伙伴都遇到过 1.首先windows7系统电脑中需要安装的是git的应用程序,安装完成之后,可以在开始菜单进行查看: 2.并需要配置好git的bin,配置环境变量,把bin的真个路径复制到环境变 ...

  3. python3 Crypto使用出现的问题

    python3 安装Crypto 出现的问题 python3 import Crypto 失败的解决办法 (AES对称加密使用 模块) # 先导入所需要的包 pip3 install Crypto # ...

  4. php smarty php函数,smarty中使用php函数的方法

    本节内容: 如何在smarty中使用php函数? 例子: 复制代码 代码示例: /** * smarty模板引擎中使用php函数 * by www.jbxue.com */ require 'libs ...

  5. 简单实现dom4j解析xml

    项目需要选择xml然后进行解析,并且将数据存到库里面,xml里面包括图片,内容类似于下图,不过List itemList=doc.selectNodes("Person");可能会 ...

  6. Go字符串拼接-源码+Benchmark

    想要写这个的目的在于,平时开发业务的时候会用到比较多的字符串拼接,刚好看了一些源码,就想说通过benchmark和底层的一些源码来看下常见字符串拼接的一些性能和原理. 常见的字符串拼接方式 + 最普通 ...

  7. μSOA 架构 - SOA 的有力替代和补充

    白杨 2019-03 baiy.cn Copyright (C) 2016 - 2019 Bai Yang, baiy.cn / baiyang.name, baiyang@gmail.com, Al ...

  8. Magicodes.Pay已支持Volo Abp

    Magicodes.Pay已支持Volo Abp 简介 Magicodes.Pay希望打造一个统一支付库,相关库均使用.NET标准库编写,支持.NET Framework以及.NET Core.目前已 ...

  9. QTextBrowser显示图片(图片文字对齐)

    有时候,除了文字,还需要在QTextBrowser显示一些图片,图标之类的.语法实际上也很简单,用QTextBrowser的insertHtml(QString)就行. 理论上下面这样的代码就可以了 ...

最新文章

  1. 以elasticsearch-hadoop 向elasticsearch 导数,丢失数据的问题排查
  2. micronet 测试2
  3. ASP.NET MVC 2
  4. mysql增删查操作
  5. 【渝粤教育】国家开放大学2018年春季 4996T水土保持技术 参考试题
  6. ssm框架下 tiles框架 的使用
  7. 具有自适应空间强度约束和隶属度链接的鲁棒模糊c均值聚类算法
  8. 【语音编码】基于matlab LPC编解码【含Matlab源码 554期】
  9. RS232和RS485协议原理和应用
  10. html 随机 小游戏代码,html小游戏代码#(精选.)(3页)-原创力文档
  11. 微信API接口(收藏)
  12. Java之Base64
  13. 进入加密的QQ空间方法
  14. 实验二 (一) 大小写英文字母表
  15. android 自动语音提醒,Android 语音播报实现方案
  16. Linux下unzip解压文件时报错:End-of-central-directory signature not found.
  17. python中if缩进规则_Python缩进与if语句 空格的魅力
  18. (精)广东工业大学 2018实时大数据分析——ShinglingMinhash实验报告
  19. 《仿真使用ARENA软件》
  20. 【PyCharm中PIL/Pillow的安装】

热门文章

  1. 解决Vue运行报js内存溢出问题
  2. html的slider位置调整,ios设置UISlider的起始位置和增量
  3. Linux-smb服务器搭建
  4. OGG(ORACLE GOLDENGATE 12.3)安装与学习文档教程
  5. 有关ucenter同步的原理(个人总结的一点浅薄见解)
  6. 【我的渲染技术进阶之旅】如何编译Filament的windows版本程序?
  7. 开源软件库TensorFlow最全教程和项目列表
  8. MapX系列-- 地图浏览
  9. 随机数生成器RandomNumberGenerator
  10. Sendmail配置以及验证成功