Java面试问题小总结1,贼真实,贼简单的

  1. 分布式和微服务有啥区别?

    • 分布式的意思是多个模块共同完成一件事情(也可以是一个模块分多个部署),每个节点可以单独完成任务;(分开不同机器部署)

    • 微服务的意思也是多个模块共同完成一件事情,(不管应用部署在哪里)

    • 微服务和分布式都是拆分单体应用的产物,可以理解为,微服务只是对服务拆分的形容词,分布式是对服务部署方面的考量,微服务是可以包含分布式的,但是分布式不一定是微服务;

  2. spring为啥要final修饰?

    :为了实现字符串池,不同的字符串变量都指向池中同一个字符串,如果变了就乱了;为了线程安全同一个字符串实例,可能被多个线程共享,所以不能让她变;为了实现String可以创建hashcode的不可变性,

  3. Java的线程池都有啥

    :可缓存线程池,定长线程池等

  4. 线程的生命周期是啥

    :五个阶段:从上往下:

    1. 新建状态(new对象的时候)

    2. 就绪状态(调用start方法之后)

    3. 运行状态(获得了cpu使用权,开始执行行run方法里面的内容)

    4. 阻塞状态(执行过程中终止执行,则进入该状态,之后可以进入就绪状态)

    5. 死亡状态(调用stop方法或者是抛出异常或者是错误时,会出现这种状态)

  5. rpc咋调用

    :服务消费者通过代理对象发起远程调用。网络客户端将序列化之后的请求发送给服务提供者Server。

  6. Java中的锁有啥

    :共享锁排他锁,乐观锁悲观锁,可重复入锁非可重入锁,公平锁非公平锁,自旋锁适应性自旋锁

  7. redis的持久化方法有啥

    :两种

    1. RDB:自动备份也可以手动备份。在指定时间间隔内,将内存中的数据集存入磁盘

    2. AOF:以日志的形式记录每个写操作,只许追加,不许改写文件,AOF比RDB保存的更加完整

  8. dubbo和springloud的有啥区别

    dubbo:基于RPC调用,使用tcp协议,效率相对较高,体系组件不全,组装滴

    springclould:使用http协议,生态好,一站式服务,品牌机

  9. gateway网关咋实现限流啊?

  10. :基于 Filter(定义过滤器对请求过 滤,完成一些功能) 链的方式提供了网关基本的功能,例如:鉴权、流量控制、熔断、路径重写、日志监控等。在核心配置文件中配置即可是实现

  11. 登陆时,权限咋控制啊?

    :可以使用拦截器

  12. 各个微服务之间咋通信呐?

    Feign,编写一个接口,就跟调用本地方法一样去调用他

  13. springboot和springclould你知道吗你

    :springclould是一系列框架的有序集合,是一套规范 ,很多组件一起完成任务,springboot简化了springclould的开发,帮我们快速把这个微服务起来

  14. springboot的启动类注解底层是啥逻辑

    :@SpringBootApplication注解是一个组合注解,前面 4 个是注解的元数据信息, 我们主要看后面 3 个的三个核心注解:@SpringBootConfiguration、@EnableAutoConfiguration、 @ComponentScan

    1. @SpringBootConfiguration:@SpringBootConfiguration注解的作用与@Configuration注解相同,都是 标识一个可以被组件扫描器扫描的配置类,只不过@SpringBootConfiguration是被Spring Boot进行 了重新封装命名而已

    2. @EnableAutoConfiguration:开启自动配置功能,它是一个组合注解,借助

      @Import来收集所有符合自动配置条件的bean定义,并加载到IoC容

      1. @AutoConfigurationPackage注解的功能是由@Import注解实现的,它是

        spring框架的底层注解,它的作用就是给容器中导入某个组件类。它的主要作用就是将主程序类所在包及所有子包下的组件到扫描到spring容器中。 因此要求,包的定义要特别规范

      2. @Import(AutoConfigurationImportSelector.class)

    3. @ComponentScan

  15. springboot常用注解有啥,根据自己的印象瞎说点

    :@Bean:将反回值对像添加到spring容器中;@Value:单个注入,将yml配置文件中的属性注入到实体类;@ConfigurationProperties :批量注入;@PropertySource 指定自定义配置文件的路径;@Configuration:自定义配置类

  16. 做项目的时候有没有啥问题啊,说自己的哈

    1. 有一次dao层,service层contro都通了,但是用postman测试的时候查不出数据。找了半天,是sql语句出现问题了,我查的时候起了别名,但是在映射的时候没有写。

    2. 有一次从报内存溢出的异常,断点查找以后发现,一着急,servce层调用错了,应该调用dao,

    3. 还有一次是数据库连接不上,他需要一个ssl的属性,

    4. 还有zookeeper注册不上,防火墙没有关闭,

    5. 安装Linux在线安装MySQL时,有一个协议好像过期了重新下载一个。

    6. sqlyog连接linux数据库时连不上,我总结哈,第一要去看防火墙,第二要去看权限,是不是允许都让连。

    7. vmware搭建虚拟机的时候电脑总是自动关机,是centos7和VMware虚拟机的版本不对应,下载一个最新的VMware就可以了

    8. 大问题没有,小问题不断,不如spring接受前台传过来的参数的时候@Para那个注解引错,将服务注册到equreka的时候,标注当前为客户端有两个注解,一不小心就搞错了。上面出现一串红色的英文字母,原理是自动出发euraka自我保护机制,服务挂了一半或者是大部分长时间没有反应,就会这

  17. 为啥要这么拆分微服务,你根据啥拆的

    :我是根据业务进行的拆分,当然还可以更小的颗粒,把用户再分成那么多,但是没有那么大的并发访问量,拆的太多也不行,越多越难管理。

  18. 依赖注入和控制反转有啥区别么,这哥俩是一回事么

    1. bean实例化到Spring容器,依赖注入到类中

    2. 控制反转:反转:对象的控制权由原来的开发人员,交给spring管理

    3. 控制反转是一种思想,依赖注入是这种思想的核心实现方法

  19. ORM对象关系映射,你知道么,谁映射到谁

    :对象映射到数据库

  20. MVC设计模式,这个M是指啥

    :MVC设计模式一般指 MVC 框架

    1. M(Model)指数据模型层(Web中指实体类),

    2. V(View)指视图层(用户界面),

    3. C(Controller)(获取请求后如何解析用户的输入,并执行相关处理逻辑,最终跳转至正确的页面显示反馈结果 )指控制层

  21. 集合用的多不?,集合你说一下都有哪些集合

  22. 公司主要用springclould,常用组件你知道不

    :把学的组件都说上得了

  23. get和post的有啥区别?

  24. 给你一个应用场景,表关系要如何设计,用户,角色

  25. map如何遍历咋实现

    :将map集合转为set集合去遍历,利用map里面的两个方法keySet和entySet

    1. 方法一:将map中的key放进set:keyset;将map中的value放入set:values;将map中的键值对放入set:entySet

      1. //3.获取所有的键到一个Set集合里面去
        Set<Object> keySet = hashMap.keySet();
        //把键值对放到set里面去
        Set<Map.Entry<Object, Object>> e2 = hashMap.entrySet();
    2. 方法二:利用connection中的迭代器:

      1. //Iterator接口的next();用于获取序列中的下一个元素
        //Iterator接口的hasNext();用于检查序列中是否还有元素
        //Iterator接口的remove();用于删除迭代器返回的元素
        Iterator<Map.Entry<Object, Object>> iterator = hashMap.entrySet().iterator();
                while (iterator.hasNext()){
                    Map.Entry<Object, Object> next = iterator.next();
                    System.out.println(next.getKey());
                    System.out.println(next.getValue());
                }
  26. http的请求报文都有啥

    1. GET 方式的请求报文

    2. POST 方式的请求报文

    3. 一个HTTP请求报文可以由请求行、请求头、空行和请求体4个部分组成。

  27. 数据库咋实现倒序

    :通过 ” order by“实现,语法 :order by 字段 asc/desc。 sql:select * from tablename order by filename1 desc;

  28. 数据路limit关键字是干啥的

    :在mysql中,limit关键字主要用于指定查询结果从哪条记录开始显示,一共显示多少条记录;它有3种使用语法“LIMIT 初始位置,记录数”、“LIMIT 记录数”和“LIMIT 记录数 OFFSET 初始位置”。

  29. 说说你最熟悉的框架,用过没

    :就把上面说的一堆说出来就可以了

  30. mysql咋优化

    1. 底层硬件

    2. 使用索引

    3. 使用explain关键字调优

    4. 主从复制读写分离,搭建mysql集群

  31. 给你一个需求,现场直编,咋解决,想要你解决问题的能力

  32. 你这个项目上线运行了吗

学一个东西三步走:

  1. 他是啥
  2. 咋用
  3. 唠明白

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值