每年都有大批的应届生步入社会, 也有大批的程序员跳槽, 尤其是三四月, 九十月. 金三银四, 金九银十. 跳槽找工作面试是必须的. 面试时有时候会遇到各种各样的问题, 也许还会有各种各样的奇葩问题. 我面试的时候, 去之前会把中意的公司网上查查, 去面试的时候会带个小本本, 一支笔去. 等面试出来时, 脑子比较深刻的面试题, 或者没听过, 没答上来的面试题会将其记在本上. 等回到住处上网查查. 这不前几天写了几篇关于面试的博客, 正好今天把之前遇到过的面试题, 朋友遇到过的面试题, 在论坛, 群里看到过的面试题, 有些摘抄过来. 还有些零散的知识点也摘抄过来做个记录
面试题:
1. 同时有多个线程, 如何保证他们按顺序执行
2. jvm
3. spring 源码
4. 高并发项目
5. 数据库的动态行转列(数据列带中文的)怎么写
6. 浅谈java内部类
7. Java锁细节整理
8. Java内存模型与线程
9. JVM原理讲解和调优
10. 为什么分布式一定要有redis
11. ConcurrentLinkedQueue源码
12. HashMap 源码
13. ConcurrentHashMap 源码
14. Spring IOC & DI & AOP
15. 高并发下的分布式事务
16. 集成单点登录流程问题
17. 面对高并发时,列出尽量多的程序、数据库的优化技巧. 怎么优化?
18. zk在dubbo中是如何通知消费者的,是通过watcher机制吗
19. 多线程多看看线程池,并发容器面试比较好
20. dubbo的集群容错
21. dubbo的底层实现原理
22. 说一下遇到过哪些高并发场景,如何解决的………
23. 你使用Spring封装的有什么缺陷 怎么清理僵尸缓存 单位时间内如果数据没有存进去怎么解决
24. Redis 缓存雪崩
25. Redis 缓存穿透
26. redis怎么清楚僵尸缓存
27. MySQL索引
28. 不重复读取和不耗尽内存的情况下处理大文件
29. 内存怎么能立马释放,是不是只有栈内存可以
30. 修改中的单元格数据为什么同一行其它的数据会被清空
(18个移动互联网模型)
已知排序算法:A 快速排序、B 归并排序、C 冒泡排序、D 桶排序 对 Arrays.sort(int[] array) 如果使用上述的每种排序算法,各自会有哪些问题? 对 Arrays.sort(Object[] array) 如果使用上述的每种排序算法,各自会有哪些问题
知识点:
1. 互联网, 因特网, 万维网. 平时我们提到的Internet, 是指互联网. 因特网的重要特征就是使用了TCP/IP 协议以及一个公网地址. 万维网是基于TCP/IP 协议中HTTP 协议的因特网. 这三者之间的关系是这样的: 互联网包含因特网,因特网包含万维网, 凡是能彼此通信的设备组成的网络就叫互联网
2. 从49995到49999正好5条数据,limit value-5,5不需要减1,如果建索引还是建聚簇索引,普通索引不适合排序,前提是表不需要频繁插入删除数据
3. 经常开启关闭数据库连接, 线程连接. 经常创建对象, 会提升服务器压力
4. “为什么要使用多线程”。我简单的说,多线程一是为了模拟多人同时操作,比如多个售票员同时卖火车票,程序怎么写?只能用多线程啊。你说的那个问题,要去研究另外一个概念叫做阻塞式io和非阻塞式io,linux包括android系统,windows系统,都是阻塞式io。非阻塞式io很少。阻塞式io中,操作系统会将耗时线程阻塞,有的文章说的是os将线程挂起,是挂起还是阻塞,不纠结这个。线程阻塞之后,cpu就会执行其他线程。我举个例子,主线程需要客户数据,主线程不可能自己去拿,因为主线程要负责显示等待圆圈动画,就是我们经常看到视频加载之前的那个圆圈圈,如果主线程去拿数据了,这是客户点击屏幕没有反应,也不显示转圈儿,客户就会开骂。所以必须子线城去拿。数具量很大,子线一时半会儿拿不到数据,os会讲子线城阻塞,执行其他等待线程,比如用户输入。子线挂起之后,硬盘读取数据完成,将数据送到总线接口处,cpu指挥内存加载数据,内存加载数据完成。os会通知子线程重新开始运行,子线城加载数据成功,返回给主线程,主线程关闭圆圈。every thing is over。
5. 线程多了可以bai提高程序并du行执行的速度,但是并不是越多越好,其zhi中,每个线程都要占用内dao存,多线程就意味着更多的内存资源被占用,其二,从微观上讲,一个cpu不是同时执行两个线程的,他是轮流执行的,所以线程太多,cpu必须不断的在各个线程间快回更换执行,线程间的切换无意间消耗了许多时间,所以cpu有效利用率反而是下降的