原创

收录了这几天面试的面试题


最近几天面试了几家公司,收集了几套面试题,希望对大家有帮助。

输入字符串,判断他是否为小写字母,如果是,把他转为大写

package com. company ;
import java. util. Scanner;
class Testl {
    public static void main(String[] args) {
//输入字符串HelloWorld判断它是否是小写字母,如果是,将他转换成大写字母
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一串字母: ");
        String line = sc.nextLine();
        char[] arr =  line.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= 97 && arr[i] <= 122) {
                arr[i] = (char) (arr[i] - 32);
            }
        }
        for (char a : arr) {
            System.out.print(a);
        }
    }
}

还有一种粗暴的办法:

package com. company ;
import java. util. Scanner;
class Testl {
    public static void main(String[] args) {
//输入字符串HelloWorld判断它是否是小写字母,如果是,将他转换成大写字母
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一串字母: ");
        String line = sc.nextLine();
        String s = line.toUpperCase();
        System.out.println(s);
    }
}

输入一串字符串,将字符串中所有的a用*代替,然后输出

package com. company ;
import java. util. Scanner;
class Testl {
    public static void main(String[] args) {
        //输入一串字符串,把字符串里的a用*代替
        System.out.println("输入一串字符串: ");
        Scanner sc = new Scanner(System.in);
        String data = sc.nextLine();
        String s = data.replace("a","*");
        System.out.println(s);
    }
}

输入某个日期,判断出他是那年的第几天

package com. company ;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java. util. Scanner;
class Testl {
    public static void main(String[] args) throws ParseException {
        System.out.println("请输入日期:(例如:2019-09-09): ");
        Scanner sc = new Scanner(System.in);
        String dateTime = sc.nextLine();

        //创建一个日期格式化对象
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

        //实例化一个date对象,并把格式化对象丢进去转译
         Date date=  simpleDateFormat.parse(dateTime);

         //创建一个Calendar对象
        Calendar calendar = Calendar.getInstance();
        //把已经转译好的日期对象date放进去
        calendar.setTime(date);
        //然后再通过他的DAY_OF_YEAR拿到他的int值
        int i = calendar.get(Calendar.DAY_OF_YEAR);

        System.out.println(i);
    }
}

倒序输出一串字符串的字符,用空格隔开

package com.company;
import java.text.ParseException;
import java.util.Scanner;

class Test1 {
    public static void main(String[] args) throws ParseException {
        Scanner input = new Scanner(System.in);
        System.out.print("输入要倒序输出的字符,空格隔开:");
        String src = input.nextLine();//需要处理的字符串
        String[] arr = src.split(" ");//按空格分割
        StringBuilder sb = new StringBuilder(src.length());//新建一个StringBuilder对象
        for (int i=arr.length-1;i>=1;i--){
            sb.append(arr[i]+" ");//将字符串依次加入StringBuilder中
        }
        sb.append(arr[0]);//最后一个单词不加空格
        System.out.println(sb.toString());//输出

    }
}

问答:

  • 事务的注解是 @Transactional

  • SpringBoot有几种启动方式

三种:
  1. 运行Main方法
  2. 打成Jar包用Java -jar 运行
  3. 通过spring-boot-plugin方式启动
  • SpringBoot如果我要用外置Tomcat怎么用
答:1.修改pom.xml文件将默认的jar方式改为war
<groupId>com.example</groupId>
<artifactId>application</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--默认为jar方式-->
<!--<packaging>jar</packaging>-->
<!--改为war方式-->
<packaging>war</packaging>

2.1在Pom.xml文件移除本地Tomcat的jar包,如果日志门面有冲突也要把日志门面换掉
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
2.2添加依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。
        相当于compile,但是打包阶段做了exclude操作-->
    <scope>provided</scope>
</dependency>
3.继承org.springframework.boot.web.servlet.support.SpringBootServletInitializer,实现configure方法:
为什么继承该类,SpringBootServletInitializer源码注释:

Note that a WebApplicationInitializer is only needed if you are building a war file and deploying it. 

If you prefer to run an embedded web server then you won't need this at all.

翻译:注意,如果您正在构建WAR文件并部署它,则需要WebApplicationInitializer。 如果你喜欢运行一个嵌入式Web服务器,那么你根本不需要这个。

启动类代码:

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}
3.1 方式一,启动类继承SpringBootServletInitializer实现configure:
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }
}
3.2: 方式二,新增加一个类继承SpringBootServletInitializer实现configure:
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        //此处的Application.class为带有@SpringBootApplication注解的启动类
        return builder.sources(Application.class);
    }

}

注意事项:

使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中配置的
server.port=
server.servlet.context-path=
将失效,请使用tomcat的端口,tomcat,webapps下项目名进行访问。
为了防止应用上下文所导致的项目访问资源加载不到的问题,
建议pom.xml文件中标签下添加标签:
<build>
    <!-- 应与application.properties(或application.yml)中context-path保持一致 -->
    <finalName>war包名称</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

使用mvn命令行打包,运行:
clean是清除之前的包,-Dmaven.test.skip=true是忽略测试代码
jar 方式打包,使用内置Tomcat:mvn clean install -Dmaven.test.skip=true
运行:java -jar 包名.jar
war方式打包,使用外置Tomcat:mvn clean package -Dmaven.test.skip=true
运行:${Tomcat_home}/bin/目录下执行startup.bat(windows)或者startup.sh(linux)
基础
随笔
  • 作者:JarvisYang(联系作者)
  • 发表时间:2020-07-23 02:44
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 评论