面试总结2

1. 介绍下项目
2. 线程池运行原理
  1. 创建一个线程池,在没有任务提交的时候,默认线程池中是没有线程的。(可以预先创建一个核心线程)
  2. 当有任务提交时,首先检测核心线程数是否已满?没满,创建核心线程运行任务;满了,进入下一个条件判断。
  3. 检测任务队列是否已满?没满,吧当前任务加入任务队列中,满了,进入下一个判断条件。
  4. 检测整个线程池的线程数是否达到了线程池最大线程数?没达到,创建非核心线程运行任务,到达了,交由**拒绝策略**处理。
  • 5 种拒绝策略

    1. 直接抛出异常
    2. 只用调用者所在线程来运行任务
    3. 丢弃队列里最近的一个任务,并执行当前任务
    4. 不处理,直接丢弃
    5. 自定义拒绝策略(比如 日志记录不能处理的任务)
  • 5 种线程池

    1. 可缓存线程池。可灵活回收空闲线程,若无可回收的空闲线程,则新建线程(线程池最大长度为 Interger.MAX_VALUE)
    2. 定长线程池。可控制线程最大并发数,超出的线程会在吹队列中等待。
    3. 定长线程池。支持定时及周期性任务执行。
    4. 单线程线程池。保证所有任务按照指定顺序(FIFO,LIFO,优先级)执行。
    5. 默认线程池。(自行设置参数)
  • 4 种阻塞队列

    1. 基于数组的有界阻塞队列,FIFO序列
    2. 基于链表的阻塞队列,
    3. 不储存元素的阻塞队列。(每个插入操作必须等到另一个线程调用移除操作,否则插入操作一直处于阻塞队列)
    4. 优先级的无限阻塞队列。
3. sql 语句:建表、修改数据表字段语句、建表需要注意的地方、sql函数用过哪些?触发器是啥?事务?
  • sql函数:
    • count(*):获取数量
    • sum() :求和(注意这里的求和是忽略null值的)
    • avg():求平均数
    • max():
    • min():
  • 触发器(trigger)
    • 监事某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊存储过程,它的执行不是由程序调用,也不是手动启动,而是由事件触发。例如对一个表进行(insert,delete,update)时就会激活它执行。
    • 只能创建在永久表上,不能对临时表创建触发器
    • 特点:保证了触发事件的原子性。
4. 介绍一下 hashMap
5. Spring运行流程,常用注解,AOP用过吗?,前台传给你数据,你使用什么来接受?
  • 常用注解

    • @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration这三个注解。放在启动类上
    • @ComponentScan:组件扫描,可自动发现个装配一些Bean,
    • @Configuration:等同于spring的XML配置文件
    • @EnableAutoConfiguration:自动配置
    • @RestController:是@Controller和@ResponseBody的组合,表示这是REST风格的控制器,并且将函数的返回值直接写入HTTP响应体中。
    • @Autowried:自动注入
  • @RequestParam

    • 127.0.0.1/test?id=123
  • @PathVariable

    • 127.0.0.1/test?123
6. Redis 类型,两种持久化方法
  • String,List,Hash,Set,Zset
  • rdb,aof
7. Linux 常用命令(查看进程,vim编辑,查找文件)
  • ps -ef|grep java :查看有关java的进程

    root       507 30893  0 15:44 pts/0    00:00:00 grep --color=auto java
    root     12502     1  0 Aug02 ?         00:13:00 java -jar makeup.jar
    
    
  • netstat -ntulp :查看tcp,udp端口占用情况

    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      12502/java
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      23044/sshd
    tcp6       0      0 :::3306                 :::*                    LISTEN      23103/mysqld
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           754/dhclient
    udp        0      0 172.19.71.111:123       0.0.0.0:*                           31105/ntpd
    udp        0      0 127.0.0.1:123           0.0.0.0:*                           31105/ntpd
    udp        0      0 0.0.0.0:123             0.0.0.0:*                           31105/ntpd
    udp        0      0 0.0.0.0:53667           0.0.0.0:*                           754/dhclient
    udp6       0      0 :::123                  :::*                                31105/ntpd
    udp6       0      0 :::17924                :::*                                754/dhclient
    
8. Git 常用命令,(回滚命令,知道吗?)
9. 知道 String的回文数的方法吗?一千以内的数,找到所有回文数。知道String的转变编码格式(GBK转为UTF8)的方法吗?
  • StringBulider的reverse()

  • String中改变编码格式的方法

    //通过指定的 charset 解码指定 byte 数组,构造一个新的String
    String (byte[]bytes,Stirng charsetNAme)
    
    //使用指定的 charset 将此 Stirng 编码到 byte序列,并将结果储存到新的byte数组
    String.getBytes(Charser charset)
    
    //合在一起就是:将GBK转换为utf8;
    byte[]src,dst;
    dst = new String(src,"GBK") .getbytes("utf-8");
    
10. servlet 生命周期
  1. 初始化:init()
    • 只有在创建 Servlet 时被调用一次,后续每次用户请求时将不再被调用(创建并加载Servlet、ServletConfig对象)
  2. 处理客户端的请求:service()
    • 检查HTTP的请求类型,并在适当的时候调用doGet、doPost等方法。(构造servletRequest、servletResponse对象)
  3. 销毁:destroy()
    • 只有在Servlet生命周期快结束的时候被调用,destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程 等类似的清理活动。
  4. 最后:JVM垃圾回收

[外链图片转存失败(img-UeEgg0tJ-1565751862526)(…/images/servlet.png)]

11. IO流使用过吗?使用的时候注意事项是什么?
  • 字节流:
    • 输入流:InputStream
    • 输出流:OutputStream
  • 字符流:
    • 输入流:Reader
    • 输出流:Writer
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值