笔试/面试遇到的坑

回来校招做了几次炮灰了。。列举下遇到的坑吧(有能力靠百度填上的,填不上的就不填了)。享年21岁,卒于二面,挫败感真强烈。。

  • linux中ctrl+c是什么作用,如何实现ctrl+c杀不死的的进程

crtl+c杀死进程,终止当前操作。实现杀不死的进程

#!/bin/sh
while true  
do  
    ${CMD_TO_RUN}
<<!  
根据进程号,当运行该shell就会一直重启shell
 !
    wait
done  

二叉树的遍历

  • 先序:先根,再左,再右。
  • 中序:先左,再根,再右。
  • 后序:先左,再右,再根。

各种查询算法

  • 冒泡排序(时间复杂度O(n2))
 for(i=0;i<n-1;i++){
 for(j=0;j<n-i-1;j++){
   if (m[i]>m[j])  
            {  
                int temp;  
                temp = m[i];  
                m[i] = m[j ];  
                m[j] = temp;  
            }                    

                   }
  }
  • 插入排序
    插入即表示将一个新的数据插入到一个有序数组中,并继续保持有序。例如有一个长度为N的无序数组,进行N-1次的插入即能完成排序;
void swap(int &x, int &y)  
{
    int temp = x;
    x = y;
    y = temp;
}

 for(int i=1; i  < sz; i++) {
        int j = i;
        while(j > 0 && (a[j] < a[j-1])) {
            swap(a[j], a[j-1]);
            j--;
        }
java数组在内存中以什么形式存在

解析:java数组在内存中存在堆区。

  • 栈:函数定义的一些基本类型的变量和对象的引用。在栈内存区,超过了空间,自动回收。
  • 堆:new创建的对象和数组,由java虚拟机自动回收来管理。
    例如:
A a=new A();  
a的变量名及引用存放在栈区。  
A的对象存放在堆区。  

通过什么方法找到sql语句慢查询的原因

1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
8、splock,spwho,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列
10、查询语句不好,没有优化

死锁产生的方式

1.互斥条件
2.请求与保持、
3.不剥夺、
4.循环等待

死锁预防策略

1.死锁检测和恢复
2.死锁预防
3.死锁避免

进程调度算法

1.先来先服务和短作业优先
2.高有限权优先调度算法
3.基于时间片的轮转调度

页面置换算法

1.FIFO算法
2.LFU算法
3.LRU算法

java中静态代码块,静态方法,静态变量

  • 静态代码块
    静态代码块会在类被加载时自动执行。
    静态代码块只能定义在类里面,不能定义在方法里面。
    静态代码块里的变量都是局部变量,只在块内有效。
    一个类中可以定义多个静态代码块,按顺序执行。
    静态代码块只能访问类的静态成员,而不允许访问实例成员。

  • 静态方法 静态方法可以直接使用,而实例方法必须在类实例化之后通过对象来调用。
    在外部调用静态方法时,可以使用“类名.方法名”或者“对象名.方法名”的形式。实例方法只能使用后面这种方式。
    静态方法只允许访问静态成员。而实例方法中可以访问静态成员和实例成员。
    静态方法中不能使用this(因为this是与实例相关的)。

  • 静态变量 静态变量是基本数据类型,这种情况下在类的外部不必创建该类的实例就可以直接使用
    静态变量是一个引用。这种情况比较特殊,主要问题是由于静态变量是一个对象的引用,那么必须初始化这个对象之后才能将引用指向它。因此如果要把一个引用定义成static的,就必须在定义的时候就对其对象进行初始化。

父类子类执行顺序问题:

父类静态代码块-》子类静态代码块-》父类构造代码块-》父类构造函数-》子类构造代码块-》子类构造函数

你知道的结构型,行为型,创建型模式。

  • 创造型:工厂,单例,原型、

  • 结构型:桥接,代理,合成

  • 行为型:访问者,模板,策略、

单例模式有几种,任写其一.

  • 饿汉模式:
public class Singleton{  
 public Singleton(){

         }
 public static Singleton instance=null;
 public static synchronized Singleton getInstance(){
       if(instance==null){
       instance=new SingleTon();
         }
        return instance;

       }

}

二叉树中必须记得一些概念

  • 1.在二叉树的第i层至多有2的(i-1)次方

  • 2.深度为k的二叉树至多有2的k次方-1

  • 3.结点数为n的完全二叉树,其深度为(向下取整)+ 1

kxind

性别:男. 敢于尝试 爱折腾的死宅程序猿. https://github.com/kxinds