日常面试题记录

switch比较支持哪些类型

来做面试题啊,老铁们~

下面的switch语句中,x可以是哪些类型的数据:()
switch(x)
{
default:
System.out.println(“Hello”);
}

A、long
B、char
C、float
D、byte
E、double
F、Object

在这里插入图片描述

ServletContext的各种参数

在这里插入图片描述

getParameter():是获取get请求post请求的参数
getInitParameter():是获取web容器的server.xml配置文件里面的Context参数
getAttribute():是获取容器的数据值,即属性,是保存在上下文的键值对,
getRequestDisplatch():请求转发:
补充:链接:

  1. 多个Servlet通过ServletContext对象实现数据共享。 在InitServlet的Service方法中利用ServletContext对象存入需要共享的数据 ServletContext context = this.getServletContext(); context.setAttribute(“name”, “haha”);

2.Web容器在启动时为每个Web应用创建一个ServletContext对象,ServletConfig对象中维护了ServletContext的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

堆区 栈区,方法区三者大小的设置

再加试一题
假如某个JAVA进程的JVM参数配置如下:
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3,
请问eden区最终分配的大小是多少?
A、64M
B、500M
C、300M
D、100M

解答
C
-Xms:1G , 就是说初始堆大小为1G
-Xmx:2G , 就是说最大堆大小为2G
-Xmn:500M ,就是说年轻代大小是500M(包括一个Eden和两个Survivor)
-XX:MaxPermSize:64M , 就是说设置持久代最大值为64M
-XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法
-XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1

网友蚂蚁金服后台一面

作者:牛客网
链接:https://zhuanlan.zhihu.com/p/73354533
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

6. 学校专业课开了哪些
7. 简单自我介绍
8. 操作系统一个进程包括哪些资源
9. 线程和进程的区别
10. 又回到第一个问题:共享哪些资源
11. 一个线程new出来一个对象,将引用 传递给另外一个线程,另外一个线程可以使用吗
12. 计算机网络里,UDP属于哪一层的
13. TCP和UDP分别面向什么场景,又有什么不同呢?
14. UDP多对多,一对一是什么?
10.UDP如何发送给多个接收方的
15. 你是怎么学习Java的
16. HashMap的时间复杂是多少
17. HashMap为什么是红黑树
18. MVC分别指什么?
19. MVC中具体的业务代码放在哪 (回答server层)
20. 那server层在MVC的哪一层
21. Spring框架提供了什么基础功能
22. IOC和AOP是在什么情况下用到
23. IOC怎么创建对象的
24. AOP怎么实现的
25. jdk动态代理和cglib动态代理原理简单说下
26. 项目(redis抢红包怎么实现的)
27. 最后一个人抢完红包后为什么要创建线程插入到本地数据库
28. Redis怎么保证并发情况下是OK的
29. Lua为什么可以保证一致性
30. 你之前又遇到其他的技术难题(Nginx)
31. Nginx做负载均衡的算法有哪些
32. 我的问题问完了,你还有什么想问我的吗

网友前端面

redis和程序的部署是分开的还是一起?
2. 为什么不考虑用程序发起请求而是用浏览器 之间的区别 压测端和服务端在同一个服务器有什么问题
3. 怎么测出他的极限性能
4. 循环了两万而不是并发是两万
5. 可以得到同一时间的请求数吗
6. 扩展到每天有1亿人次的访问量该怎么设计
7. 1亿量级需要多少台服务器
8. nginx这层挂掉怎么处理
9. redis集群怎么访问
10.你怎么知道其中一台机器有没有挂
10. 主服务器挂了,副服务器替换主服务器的机制是什么?谁来执行
11. 我访问的那台redis挂了,它怎么告诉我去别台机器呢
12. 存在redis的数据太大了怎么办
13. 业务要求存储过量的数据怎么办
14. 如果一台redis服务器挂掉了,如何短时间内恢复数据
15. 短时间不能重启,只能换一台机器.那怎么恢复之前挂掉的数据

作者:牛客网
链接:https://zhuanlan.zhihu.com/p/73354533
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

qq群大佬面试阿里题目

在这里插入图片描述

在这里插入图片描述

一个超级绕的继承重写输出

注意其中的父类调用了子类的方法,子类又调用了父类的方法,调试才想出来的,my god
每日趣味问答来了
大厂面试题:
Test.main()函数执行后的输出是( )

class Test {
public static void main(String[] args) {
System.out.println(new B().getValue());
}
static class A {
protected int value;
public A (int v) {
setValue(v);
}
public void setValue(int value) {
this.value= value;
}
public int getValue() {
try {
value ++;
return value;
} finally {
this.setValue(value);
System.out.println(value);
}
}
}
static class B extends A {
public B () {
super(5);
setValue(getValue()- 3);
}
public void setValue(int value) {
super.setValue(2 * value);
}
}
}

A、6 7 7

B、22 34 17

C、22 74 74

D、11 17 34

正确答案为B
本题注意点:
除了B 中setValue中 super.setValue是调用了父类A的setValue方法,其他都是被B重写
finally 虽然会被执行,对应的变量值能被修改,但是实际的返回值不受影响

**

锁的面试题

**
1.synchronized volatile 的 CPU 原语是如何实现的?
主要有monitor的操作原语,monitorenter monitorExit 和常量池的ACC_Sychronized实现,具体参考
2.无锁、偏向锁、轻量级锁、重量级锁有什么差别?

3.线程间通信,同机器进程间通信,跨机器进程间通信,各有什么方法?

4.线程和纤程的区别的是什么?为什么纤程比较轻量级?
纤程是比线程更小的一个运行单位。一个线程可以拆分为多个纤程,然后通过人工转换,从而让各个纤程工作。纤程是以用户方式代码来实现的,内核并不知 道纤程,并且它们是根据用户定义的算法来调度的。由于你定义了纤程的调度算法,因此,就 内核而言,纤程采用非抢占式调度方式。

5.ThreadLocal 有没有内存泄漏的问题?为什么?
ThreadLocal重要是一个ThreadLocalMap,每一个线程绑定一个key,value是这个线程的本地数据变量,key是用弱引用的,下一次GC无论内存是不是满了都会被回收,但是value还被当前的线程强引用引用着,不会被回收,这个线程没死value都不会被回收,虽然key已经被回收了这个本地变量已经用完了过期了,但是实际的value还没被回收造成了内存泄漏,线程我们不能让他挂掉,特别是使用线程池的时候,线程不会被回收的,避免的方法是程序员手动清除这些无用过时的value调用ThreadLocal的remove方法。
参考

6.下列三种业务,应该如何使用线程池:

高并发、任务执行时间短
(减少CPU线程数量)

并发不高、任务执行时间长(分两种 看看时间长的原因是是因为IO操作还是因为计算量大,如果是IO操作那么CPU就是空闲的可以增加线程数量,如果是计算量大,可以减少线程数量,不要打断计算减少线程间的上下文切换)

并发高、业务执行时间长(增加cpu数量)

spring的扩展机制(BeanPostProcessor)

如何扩展spring的功能??

该接口我们也叫后置处理器,作用是在Bean对象在实例化和依赖注入完毕后,在显示调用初始化方法的前后添加我们自己的逻辑。注意是Bean实例化完毕后及依赖注入完成后触发的。接口的源码如下
在这里插入图片描述

参考测试例子文章

如何自定义一个springboot的starter

步骤:
1.新建一个maven项目,不是spring boot项目,写自己的bean,写这个beans相关的配置类,记得加上@ComponentScaner
2.新建一个springboot项目,在pom文件denpendency说明刚才新建的maven项目即starter,还有重要的一步是在spring.factories文件配置这个maven项目的路径
3.启动springboot项目这个starter即刻被使用

参考用例

各个版本的·JDK默认的垃圾回收器

jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)

jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)

jdk1.9 默认垃圾收集器G1

(其他的serial new+serial +old;;;ParlNew +CMS是很古老的)

-XX:+PrintCommandLineFlagsjvm参数可查看默认设置收集器类型

-XX:+PrintGCDetails亦可通过打印的GC日志的新生代、老年代名称判断

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值