testtesttesttest

Posted 我爱看明朝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了testtesttesttest相关的知识,希望对你有一定的参考价值。

算法

  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("-------------------");
    

    //只有根节点
    // 10
    public void test3() 
        System.out.println("test3:");
        BinaryTreeNode node = new BinaryTreeNode(10, null, null);
        traverse(node);
        System.out.println("-------------------");
    

    //空树
    // null
    public 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));
    

    //期望false
    public 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>() 
            @Override
            public 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() 师兄带你轻松入门GitHub

师兄讲座的总结

软件工程第二次作业--师兄采访

SoftmaxWithLoss函数和师兄给的loss有哪些区别呢

采访上届师兄心得

appium xpath找兄弟元素 根据二师兄找大师兄 语法:driver.find_element_by_xpath("//*[@text='测听报告列表']