Estación de suministro de Cainiao: preguntas de prueba escritas comunes de Java

Tabla de contenido

 

(1) Escriba un algoritmo para contar el número de apariciones de una determinada subcadena en una cadena. (Tenga en cuenta que la cadena de destino no necesariamente tiene una coma)

(2) ¿Cuál es el resultado de salida del siguiente código: - Gestión de memoria Java

(3) Hay una serie de números: 1 1 2 3 5 8 13 21 ..., escribe un algoritmo para encontrar el número 30

(4) El resultado de ejecución del siguiente programa es: Punto de investigación: para crear un objeto de subclase, primero llame al método de construcción de la clase principal y luego llame al método de construcción de la subclase

(5) Escriba el código para completar el recorrido de los elementos en HashMap map = new HashMap (). (Se puede escribir de muchas formas), cadena>, cadena>

Características de la colección de mapas:

Uso mejorado para implementación de bucle

Recorrido usando expresiones lambda

(6) Ejemplo de base de datos

Cree tres tablas respectivamente. La estructura de la tabla es la siguiente

Restricciones del escenario empresarial:

tema:


(1) Escriba un algoritmo para contar el número de apariciones de una determinada subcadena en una cadena. (Tenga en cuenta que la cadena de destino no necesariamente tiene una coma)

  • Como la cadena "hola mundo, hola eclipse, hola idea, hola primavera", cuente el número de apariciones de "hola"
public class SubStringCount {
    public static void main(String[] args) {
        String dest = "hellohello world, hello  eclipse, hello idea, hello spring";
        String subStr = "hello";
        int count = 0; //计数器
        int index = -1;  //表示从目标串哪个位置开始查找;也表示查找到目标子串出现的下标

        //若目标子串出现,则计数器+1,且index下标值后要后移到目标串出现的下一个字符去
        while((index=dest.indexOf(subStr,index))!=-1){
            //计数器+1
            count ++;
            //index索引后移到出现的子串的下一个字符
            index += subStr.length();
        }
        System.out.println(count);
    }
}

(2) ¿Cuál es el resultado de salida del siguiente código: - Gestión de memoria Java

class T{
    public static void main(String[] args){
        String str = "ok";
        char[] chs = {'g','b','k'};
        T t = new T();
        t.change(str,chs);
        System.out.println(str);
        System.out.println(Arrays.toString(chs));
    }
    public void change(String str,char[] chs){
        str = "hello";
        chs[0] = 'a';
}
//输出结果
 //str:  ok
// chs: a b k

 Análisis:

(3) Hay una serie de números: 1 1 2 3 5 8 13 21 ..., escribe un algoritmo para encontrar el número 30

  • Secuencia de Fibonacci (Fobonacci) --- punto de prueba: recursividad

  • Recursion: es un tipo de pensamiento, aplicado en el aspecto del código: método de llamada al método en sí

  • Algoritmo clásico recursivo: secuencia de Fibonacci; encontrar factorial; la capa inferior de la lista enlazada también se implementa de forma recursiva

package cn.tedu.interview.day02;

/**
 * 求出第30个位置的值,斐波那契数列,考察递归
 */
public class Fabonacci {
    public static void main(String[] args) {
        //求出第30位的值
        Fabonacci fabonacci = new Fabonacci();
        int x = fabonacci.fn(30);
        System.out.println(x);
    }
    //求出某个位置的值  参数n:位置
    public int fn(int n){
        if(n==1 || n==2){
            return 1;
        }
        return fn(n-1)+fn(n-2);
    }
}

(4) El resultado de ejecución del siguiente programa es: Punto de investigación: para crear un objeto de subclase, primero llame al método de construcción de la clase principal y luego llame al método de construcción de la subclase

public class Person{
    public Person(){
        System.out.println("superclass");
    }
}
public class Teacher extends Person{
    public String name = "jack";  //这里是public
    public Teacher(){
        System.out.println("subclass");
    }
    public static void main(String[] args){
        Teacher teacher = new Teacher();
        System.out.println(teacher.name);
    }
}


//superclass
//subclass
//jack
//通过debug查看执行过程,super()会出现在构造方法的第一行代码,无论写或不写,都存在;
//注意:若在构造方法中显示的调用父类的有参构造方法,此时super()不会默认提供

(5) Escriba el código para completar el recorrido de los elementos en HashMap <String, String> map = new HashMap <String, String> (). (Puede escribir de muchas formas)

public static void main(String[] args) {
        Map<String,String > map = new HashMap<>();
        map.put("语文","90");
        map.put("数学","80");
        map.put("英语","70");
        map.put("物理","89");

        //如何从map集合中取元素----  通过key值取value值,通过get方法实现
        //1. 使用增强for循环来遍历
        for (Map.Entry<String,String> entry:map.entrySet()) {
            System.out.println(entry.getKey()+"-"+entry.getValue());
        }
        //2. 可以使用lambda表达式来遍历
        map.forEach((k,v)-> System.err.println(k+":"+v));

        List<String> list = new ArrayList<>();
        list.add("tom");
        list.add("jack");
        list.add("rose");

        //list遍历--lambda
        list.forEach(str-> System.err.println(str));
    }

Características de la colección de mapas:

  • La colección de mapas de HashMap no está ordenada
  • LinkedHashMap está ordenado

Uso mejorado para implementación de bucle

Recorrido usando expresiones lambda

Expresión lambda:

Sintaxis: () -> {}

uso:

Se usa para implementar algunas interfaces funcionales (un método abstracto después de la interfaz): reemplaza parte de la clase interna anónima

Runnable接口 -- 功能性接口 -- run()
1. 使用匿名内部类来实现该接口
	Runnable r = new Runnable(){
	    public void run(){
	    	....//任务
	    }
	}
	new Thread(r).start();

2. Runnable r = ()->{//任务};
    new Thread(r).start();

 

 

 

 

 

El significado de cada parte de la expresión lambda:

(): Representa la lista de parámetros del método reescrito:

Si no hay parámetros, no escriba nada

Si hay parámetros, los tipos de parámetros se pueden omitir, y si la lista de parámetros tiene solo un parámetro, () también se puede omitir en este momento

Si hay varios parámetros, el tipo de parámetro se puede omitir, en este momento () no se puede omitir

{}: Representa el cuerpo del método reescrito

Recorre la colección:

Puede recorrer colecciones de listas, conjuntos y mapas. La razón por la que las expresiones lambda pueden atravesar los tres tipos de colecciones es porque los tres tipos de colecciones brindan soporte para lambda (método proporcionado: forEach ())

(6) Ejemplo de base de datos

  • Cree tres tablas respectivamente. La estructura de la tabla es la siguiente

Mesa de clase (clase) Mesa de estudiante (estudiante)

número de serie Nombre de la clase
Yo dint ) nombre_clase (varchar)
1 Clase uno
2 Segunda clase
3 Tres turnos
4 Clase cuatro
5 Clase 5
número de serie Identificación del Estudiante  Nombre género Clase (
Yo dint) stu_no (varchar) stu_name (varchar) stu_gender  (varchar) class_id (int)
1 2020001 Zhang San masculino 1
2 2020002 Li Si masculino 1
3 2020003 Li Li Mujer 2
4 2020004 Zhao Ting Mujer 3
5 2020005 Wang Wu masculino 3

Puntaje 

estudiante Idioma matemáticas
stu_id (int) chino (int) matemáticas (int)
1 70 47
2 80 60
3 50 82
4 80 90

 

 

 

 

 

 

 

Restricciones del escenario empresarial:

  • Hay varios estudiantes en una clase y un estudiante pertenece a una sola clase 
    Los estudiantes pueden no tener calificaciones

Crear mesa

CREATE TABLE class(
id int,class_name varchar(20)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
CREATE TABLE student(
id int,stu_no varchar(20),
stu_name varchar(20),stu_gender varchar(20),class_id int
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
CREATE TABLE score(
stu_id int,chinese int,math int
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
Insertar datos
INSERT INTO class VALUES(1,'一班'),(2,'二班'),(3,'三班'),(4,'四班'),(5,'五班');
INSERT INTO student VALUES(1,'2020001','张三','男',1);
INSERT INTO student VALUES(2,'2020002','李四','男',1);
INSERT INTO student VALUES(3,'2020003','李丽','女',2);
INSERT INTO student VALUES(4,'2020004','赵婷','女',3);
INSERT INTO student VALUES(5,'2020005','王五','男',3);
INSERT INTO score VALUES(1,70,47),(2,80,60),(3,50,82),(4,80,90);

tema:

  1. Consultar los puntajes del curso (número de estudiante, nombre, género, nombre de la clase, puntaje de idioma, puntaje de matemáticas) de todos (incluidos los estudiantes sin calificaciones)

    Consulta conjunta de varias tablas (consulta asociada): consulta de combinación interna, consulta de combinación externa izquierda, consulta de combinación externa derecha, consulta de unión automática

    Nota:

    Si el campo que se va a consultar en una consulta de varias tablas es el único que existe, no es necesario que escriba el nombre de la tabla. Campo, puede escribir el nombre del campo directamente
    SELECT 
        stu_no,stu_name,stu_gender,class_name,chinese,math
    FROM 
        student stu 
    JOIN 
        class c 
    ON 
        stu.class_id=c.id 
    LEFT JOIN 
        score sc 
    ON 
        stu.id = sc.stu_id;
    

     

  2. Consultar a los estudiantes cuya puntuación en el idioma sea superior a "Zhang San" (ID del estudiante, nombre, sexo, nombre de la clase, puntuación del idioma)

    1. Analizar y determinar la consulta de tres tablas, determinar la condición de conexión y determinar la condición de la consulta

    SELECT 
        stu_no 学号,stu_name  姓名,stu_gender 性别,class_name 班级名称,chinese 语文分数
    FROM 
        student stu 
    JOIN 
        class c 
    ON
        stu.class_id = c.id
    JOIN 
        score sc 
    ON 
        sc.stu_id =stu.id
    WHERE
        chinese > (
                   SELECT 
                         chinese 
                    FROM 
                        student stu 
                    JOIN
                        score sc 
                    ON
                        stu.id=sc.stu_id 
                    WHERE 
                        stu.id=1 );

    3. Consultar a los estudiantes calificados en cada materia (puntuación> = 60) (número de estudiante, nombre, puntuación de idioma, puntuación de matemáticas)

    Análisis 1, según el campo de consulta para determinar la tabla de consulta 2, la condición de conexión 3. Condiciones de consulta

    SELECT 
        stu_no 学号,stu_name 姓名,chinese 语文分数,math 数学分数
    FROM 
        student stu 
    JOIN 
        score sc
    ON 
        stu.id = sc.stu_id
    WHERE 
        chinese>=60 
    AND 
        math>=60;

     

4. Consultar la clase con el número de clases> = 2 (número de clase, nombre de clase, número de personas)

Análisis Determine la clase de la tabla, el alumno según el campo de consulta, agrupe según la clase y cuente el número de alumnos

Nota: El resultado de la consulta count () se usa como la condición de la consulta, la función de conteo usará group by y la consulta se basará en el resultado de la agrupación

, La palabra clave have debe usarse para filtrar los datos agrupados.

Agrupar por grupo por uso: la agrupación se usa generalmente junto con funciones agregadas (recuento, promedio, suma, máximo, mínimo)

SELECT 
    c.id 班级编号,class_name 班级名称,count(*) 人数
FROM 
    student stu JOIN class c 
ON
    stu.class_id = c.id
GROUP BY 
    stu.class_id 
HAVING COUNT(*)>=2;

 

Supongo que te gusta

Origin blog.csdn.net/c202003/article/details/107802174
Recomendado
Clasificación