面试总结
文章平均质量分 69
you are so cute
学无止境
展开
-
Netty常问面试题
Netty的使用其实需要开发人员定义各种Handler,合理的运用ChannelPipeline中各种入站、出站的Handler处理业务逻辑,在不同的Handler流转中就涉及粘包半包、序列化反序列化、编解码问题。Netty是一个很强大的网络交互框架,具体的使用还得参考其源码学习相关知识,我这里只是简单的记录下面试过程中面试官问到的一些相关问题(简历上写用过Netty)1.解决粘包半包问题:a.在包尾增加分隔符;netty自带的回车换行分隔符,或者自定义分隔符b.消息定长;例如每个报文长度大小2原创 2021-07-20 19:46:05 · 153 阅读 · 0 评论 -
说说BIO和NIO
BIO:同步阻塞IOBIO是面向流的,用流读取数据,读/写时线程都会阻塞;socket通讯就是BIO的很好的例子代码写一个BIO:Server端package com.bio.demo.bio;import lombok.extern.slf4j.Slf4j;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.原创 2021-07-19 20:19:20 · 86 阅读 · 0 评论 -
面试官:请说下什么是JMM?
JMM:JAVA 内存模型,在JSR133里指出了JMM是用来定义一个一致的、跨平台的内存模型,是缓存一致性协议,用来定义数据读写的规则。1.内存可见性在Java中,不同的线程拥有各自的私有工作内存,当线程执行过程中需要读取或者修改某个变量时,需要从主存中拿到变量的值放到自己工作内存的变量副本中, 当线程中对该变量做了修改之后,其他线程并不能直接读取到修改后的值(因为他只存在于当前操作线程的工作内存中),需要把修改后的值刷新到主存中,其他线程才能从主内存读取到修改后的值。read->l原创 2021-07-08 18:51:55 · 165 阅读 · 0 评论 -
线程池中线程的提交和结束
之前讲了线程池的创建和使用,今天讲下线程的提交和终结1.提交任务1.1 void execute(Runnable task);提交一个任务,没返回值1.2 Future<?> submit(Runnable task);提交一个任务,有返回值public class ThreadPool1 { public static void main(String[] args) { ExecutorService executorService = E原创 2021-07-07 19:13:33 · 705 阅读 · 0 评论 -
线程池的工厂方法及其使用
在我之前的文章中已经讲解了线程池的构造方法以及使用,本篇文章主要讲解工作中经常用到的三种线程池的创建及使用1、线程池状态补充下知识点:线程池的几种状态(这点应该在上一篇文章中讲到的https://blog.csdn.net/weixin_45418455/article/details/118513730#comments_17386551)ThreadPoolExecotor使用int的高3位来表示线程池状态,低29位表示线程数量状态 value 描述 RUNNING--线原创 2021-07-06 19:15:56 · 1094 阅读 · 0 评论 -
线程池原理及使用
1.线程池核心参数含义线程池源码,咱们先依次介绍下各个参数的含义:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue&原创 2021-07-06 11:20:58 · 238 阅读 · 1 评论 -
HashMap面试常问知识点
hashMap做为一种代码中常用的数据结构,面试官经常会问一些此类问题,下面是我面试过程中面试官问到的问题,加以整理。hashMap 底层原理1.1 简单的回答,hashMap的底层实现是数组实现,解释如下:HashMap<String,String> map = new HashMap<String,String>();map.put("name","张三"),对key进行hash运算,得到一个hashCode与数组长度n进行取模运算(数组长度假设为n),可以定位到原创 2021-07-05 17:20:32 · 104 阅读 · 0 评论