普元智慧笔试总结

笔试总共有四道题

1、计算一个航班的飞行时间,通过键盘输入两个数,分别代表航班起飞时间和到达时间(不用考虑跨天的情况)。比如一个航班起飞是7:30,到达是14:20,则输入730和1420,通过程序,则要求输出内容为:“航班飞行时间为6小时50分钟”。

这道题猛一眼看上去准备用Java的calendar来做,但是转念一想,简单减法也可以

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(System.in);
            Integer i = scanner.nextInt();
            Integer j = scanner.nextInt();
            //小时
            Integer h1 = i / 100;
            Integer h2 = j / 100;
            //分钟
            Integer m1 = i % 100;
            Integer m2 = j % 100;
            if (m2 - m1 < 0){
                Integer h = h2-h1-1;
                Integer m = m2-m1+60;
                System.out.println("航班飞行时间为"+h+"小时"+m+"分钟");
            }else {
                Integer h = h2-h1;
                Integer m = m2-m1;
                System.out.println("航班飞行时间为"+h+"小时"+m+"分钟");
            }
        }catch (Exception e){
            System.out.println("您的输入有误,请检查!");
        }
    }
}

2、将一个Student对象使用jdbc保存到mysql数据库,要求写出数据库建表脚本以及写出使用jdbc插入数据库的java代码。 说明: Student包含三个属性(姓名、年龄、出生年月),如(张三、20、19860101) mysql数据库连接信息如下: driverclass: com.mysql.jdbc.Driver connection URL: jdbc:mysql://127.0.0.1:3306/test username:root password:000000

这个题就是考察简单的jdbc插入操作

package test;

import java.sql.*;

/**
 * @author zsh
 * @company wlgzs
 * @create 2019-03-21 20:19
 * @Describe JDBCTest,PreparedStatement与Statement区别
 */
public class JDBCTest {

    class Student{
        private String name;
        private Integer age;
        private String birthday;

        public Student(String name, Integer age, String birthday) {
            this.name = name;
            this.age = age;
            this.birthday = birthday;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }

        public String getBirthday() {
            return birthday;
        }

        public void setBirthday(String birthday) {
            this.birthday = birthday;
        }
    }

    public void t() throws ClassNotFoundException, SQLException {
        //1 加载数据库驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2 获取数据库连接
        String url = "jdbc:mysql://127.0.0.1:3306/test";
        String user = "root" ;
        String password = "000000" ;
        Connection conn = DriverManager.getConnection(url, user, password);
        Student student = new Student("张三",20,"19860101");
        //3 创建一个Statement
        String sql = "insert into students (name,age,birthday) values(?,?,?)" ;
        PreparedStatement pstmt;
        try {
            pstmt = (PreparedStatement) conn.prepareStatement(sql);
            pstmt.setString(1, student.getName());
            pstmt.setInt(2, student.getAge());
            pstmt.setString(3, student.getBirthday());
            pstmt.executeUpdate();
            pstmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            conn.close();
        }
    }
}

3、要求使用javax.servlet.Filter实现统计某个用户访问了多少次tomcat服务器的功能。其中用户已经登录,登录信息已经放到session,key是USER_ID,其中用户登录的访问请求不需要进行统计。

这个题有点小疑问,

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

public class TestFilter implements Filter{

    private int count;

    public void  init(FilterConfig config)
            throws ServletException{
        // Reset hit counter.
        count = 0;
    }

    public void  doFilter(ServletRequest request,
                          ServletResponse response,
                          FilterChain chain)
            throws java.io.IOException, ServletException {
        HttpSession session = request.getSession(false);
        User user = session.getAttribute("USER_ID");
        if (user != null){
            count++;
        }
        chain.doFilter(request,response);
    }
    public void destroy() {
        System.out.println("访问次数 :"+ count );
        count = 0;
    }
}

4、使用4个子线程求出1到100的和并答应。每个子线程计算25个数

这道题多个解法,我这里使用最简单的,开四个线程去执行

package test;

/**
 * @author zsh
 * @site qqzsh.top
 * @company wlgzs
 * @create 2019-04-29 19:56
 * @Description
 */
public class FourThread {

    static int sum11 = 0;
    static int sum12 = 0;
    static int sum13 = 0;
    static int sum14 = 0;
    static int sum = 0;


    public static void main(String[] args) throws InterruptedException {
        new Thread(){
            public void run() {
                int sum1=0;
                for(int i=1;i<=25;i++){
                    sum1+=i;
                }
                sum11 += sum1;
            }
        }.start();

        new Thread(){
            public void run() {

                int sum2 = 0;
                for (int i = 26; i <= 50; i++) {
                    sum2 += i;
                }
                sum12 += sum2;
            }
        }.start();

        new Thread(){
            public void run() {

                int sum3 = 0;
                for (int i = 51; i <= 75; i++) {
                    sum3 += i;
                }
                sum13 += sum3;
            }
        }.start();

        new Thread(){
            public void run() {
                int sum4 = 0;
                for (int i = 76; i <= 100; i++) {
                    sum4 += i ;
                }
                sum14 = sum4;
            }
        }.start();


        Thread.sleep(100);

        sum = sum11 + sum12 + sum13 + sum14;
        System.out.println( "sum: " + sum);
    }
}

猜你喜欢

转载自www.cnblogs.com/zsh-blogs/p/10792764.html