面试问题总结

本贴最后更新于 1974 天前,其中的信息可能已经时移世易
  1. java 中的关键字 final 可以用来修饰什么,分别起什么作用。
  2. 请说明 ArrayList,Vector,LinkedList 的存档性能和特性。
  3. String,StringBuffer,StringBuilder 有什么区别。
  4. swith 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 strng 上。
  5. 存在表 T(a,b,c,d),要根据字段 c 排序后取第 21-30 条记录显示,请写出 sql 文。
  6. 查出 user 表中 username 相同的记录,显示 username 和重复的次数,给出 sql。
  7. float 是多少位的。
  8. 设计四个线程,其中两个线程每次对 J 增加 1,另外两个线程每次对 J 减 1,写出程序或者思路。
  9. a.hashCode()有什么作用?与 a.equals(b)有什么关系?
  10. 写出 hashMap 的数据结构。
  11. 简述 MVC 设计模式。
  12. 什么是 Java 优先级队列。
  13. 简述一下 spring,都用过 spring 的什么?
  14. 说一下数据库的索引。数据库隔离级别。
  15. statement 与 PreparedStatement 的区别,如何防止 sql 注入。
  16. 简述一下 restful,设计一个 url 要注意什么。
  17. 如何进行单元测试的。
  18. 选用了 base 跟 solo,如何实现的数据同步。
  19. 说几个常用算法。
  20. 下面程序会输出什么值?
    int count = 0;
    for(count++;count++ < 10; count++)
    System.out.println(count);
    
  21. 简述 form 表单提交 POST 方法与 GET 方法在字符编码,http 协议等方面的区别。
  22. ArrayList,LinkedList,HashMap 的区别。
  23. 介绍一下 Spring 的事务管理,使用什么设计模式实现。
  24. 一个 HTTP 请求从开始到结束都经历哪些过程,简写流程图即可。
  25. synchronize 关键字与 volatile 关键字的作用和区别。
  26. 说一下内连接,左连接,右连接。
  27. 给 list 排序(我记得是有个 collections.sort),说出这个,又问了一个什么排序的,忘记了。
  28. 写两个链表,将其合并排序,如何操作不多占用内存。(完全没任何思路,对链表就不熟哇···)
  29. 多线程是 void,无返回值的,如果用多线程从不同的数据库中读取到数据,如何将读取到的信息合并。(题目记得不是很清楚了,应该精髓记住了,大体就是没有返回值,那如何合并多线程取得的东西。一个同事跟我说出力到文件中,然后合并文件)
  30. 写出单例模式。

上面基本就是这次面试问过的能记住的问题。有些记不住了。那些问高并发的,算法的,都被我自动忽略了。我是真不懂那些呀~上面这些其实还是蛮基础的,但是很多你懂,不一定记得准确,说就更不一定说得齐全了。

下面这些是之前在网上看到的,就粘贴过来了。有兴趣的看看。

spring 主要考 ioc,aop 底层实现,事务,spring mvc 原理
ioc 就有可能问反射和类加载,这就会牵涉 jvm 的东西
互联网公司面试还有三个东西最好看看,消息队列,nosql,rpc 与 soa

  1. Spring.mvc 的优势,原理,流程
  2. Mybatis 的原理优势
  3. 集合里面那些对象的原理
  4. 扩容原理,特别是 map 的底层
  5. Hashmap. Hashtable 和 cocurrentHashMap 的区别,要讲出它们各自的实现原理才行,比如 Hashmap 的扩容机制. cocurrentHashMap 的桶分割原理. 多线程安全性。
  6. 几种造线程池的方法,区别
  7. Rpc 原理
  8. Nio 和 netty,常用的接口
  9. Redis 和数据库的持久化的
  10. Memached 过程和原理
  11. 多线程时间复杂度
  12. Redis 做队列的原理
  13. zk 做订阅的原理,底层
  14. Juc 里面的锁原理
  15. 实现自己的 hashmap
  16. treemap 红黑树
  17. jvm 调优
  18. jvm 内存模型
  19. 类加载器机制
  20. 数据库索引
  21. 数据破坏索引
  22. 手写快排
  23. js 闭包
  24. nio 是否了解 阻塞之后通知机制是怎样的?
  25. Java 的序列化做什么用的 序列化 id 会出现哪些问题?
  26. 在 Java 中 Executor 和 Executors 的区别?
  27. 为什么使用 Executor 框架比使用应用创建和管理线程好?
  28. 怎么通过 linux 命令去分析 jvm 里面那个线程阻塞了
  29. Java 中用到的线程调度算法是什么?
  30. 什么是多线程中的上下文切换?
  31. classloader 结构,是否可以自己定义一个 java.lang.String 类,为什么? 双亲代理机制。
  32. 有没有做过 jvm 内存调优,如何做的,举例子,用过哪些工具?
  33. Java 中的 volatile 关键是什么作用?怎样使用它?在 Java 中它跟 synchronized 方法有什么不同?
  34. 面试官从简历里抽了一个较感兴趣的项目,让把项目简单介绍了下,针对项目问了几个技术问题
  35. 介绍 Java 中垃圾回收机制,程序员平时需要关注这个吗?为什么?请举例说明。
  36. 数据库隔离级别介绍. 举例说明。
  37. override 和 overload 的区别。
  38. 求二叉树的最大距离(即相距最远的两个叶子节点),写代码。
  39. 两个栈实现一个队列,写代码。
  40. 你觉得你的优势是什么?有什么技术薄弱点吗?
  41. 数据库 sql 调优,慢 sql 定位
  42. 索引有哪几种,区别,使用场景
  43. mysql 引擎,哪几种,区别使用场景

下面是一个在外企工作 8 年人,给传统 it 转互联网方面的面试建议。

  1. 算法基础
    写 java 的基本上都是做应用系统的,用到算法的机会几乎没有,所以一般不会考。但是如果工作年限比较长,保不齐面试官怀疑你的编程能力,故意要考考,所以快排. 堆排. 逆转链表. 遍历二叉树之类的基础还是复习复习吧。
    如果面的是 bat 核心部门,担心碰见装逼人士的话,也可以提前复习下《编程之美》之类的。

  2. java 基础
    hashmap 面试官最喜欢考,一定要搞明白原理。
    treemap 知道就可以,应该没人闲的蛋疼考红黑树。
    threadlocal 面试官也喜欢考,要搞明白原理
    反射. 动态代理. ioc. aop 复习下吧,几乎必考
    nio. aio 几乎都会问,抽空写写例程,知道 netty mina
    class loader: 知道双亲委派,如果知道 tomcat. jetty class loader 异同更佳

  3. gc
    gc 很多面试官都喜欢考
    面试前背熟各种 gc 算法的区别,理解原理。
    G1 很多面试官自己都不明白,没时间就不用管。

  4. 高并发
    传统 IT 一般接触不到高并发,不过没关系按下面说的做,应付面试问题不大
    把 java.util.concurrent 下面所有的包和类通读一遍,理解原理. 记住核心代码. 写例程,网上有很多 concurrent 相关类原理解析的文章,对着文章看源代码理解起来问题不大。
    有些类代码很复杂比如 aqs,看不明白就算了,也不用太花功夫,记住原理即可,因为大部分面试官也不明白。
    一定要写例程,例程最好跟你的业务能扯上一点点关系,这样面试的时候就是你实际项目里面的代码了。
    面试官喜欢考的类有:ConcurrentHashMap. 读写锁. Condition. 线程池. Barrier. CountDownLatch. Callable. BlockingQueue

  5. hdfs 和 mr
    传统 IT 一般也接触不到,如果不想准备就算了,如果想准备的话,就在自己的开发机上撘 3 个 linux 虚机, 按照网上的教程自己一步一步撘一个 hadoop 环境出来,然后找几个实际业务中生成出来的 log,写几个 mr 程序处理一下。
    面试的时候就可以很谦虚的说,实际项目里面用过,但是用的不多

  6. application server
    websphere. weblogic. jboss 之类的就不用准备了,应该没人问你这些啦。
    有时间的话,看看 tomcat 和 jetty 的源代码,重点看线程模型和 io,这将是一个很好的加分项

  7. 数据库
    oracle. sybase. db2 不会有人关心了,如果之前没用过 mysql 的话,找本介绍 innodb 原理的书好好通读一遍吧。
    理解 myisam 和 innodb 的区别
    理解关系型数据库索引的原理,理解一些简单的索引优化的原则。
    面试官很喜欢给出一堆 where 子句,考索引. 复合索引什么情况下起作用

  8. 缓存
    一致性哈希很多面试官喜欢考,提前准备下吧。

  9. ssh 框架
    这些没搞过就没搞过吧,这种框架层面的东西,对于一个有经验的 java 码农,学起来也就是分分钟的事情。
    不过你也可以说这些我没用过,但是我知道原理,然后说一堆动态代理. cglib 的原理出来,也是加分。

打赏 10 积分后可见
10 积分 • 44 打赏
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    324 引用 • 1395 回帖
  • 原理
    16 引用 • 44 回帖

相关帖子

24 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • wuhongxu

    好东西,感谢分享,我对 java 的理解实在是太浅了

  • 其他回帖
  • Eddie

    同期进公司的人今年人都走光了。部门除了管理层外,找不到一个在公司任职 3 年以上的人。

  • yangyujiao 2
    作者

    我最近也听到很多离职的朋友说工作不好找,我觉得可以等年后再说。年后可能用人需求会大一些,因为人员流动的多啊,好多人都是等着拿了年终在走啊。

    1 回复
  • wenandlu

    多少年前的东西了还来挖,发帖的时候我还是个刚毕业的萌新

    1 回复
  • 查看全部回帖

推荐标签 标签

  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 4 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    124 引用 • 580 回帖 • 2 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 213 关注
  • 音乐

    你听到信仰的声音了么?

    59 引用 • 509 回帖
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 594 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 1 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    198 引用 • 120 回帖 • 1 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    6629 引用 • 29735 回帖 • 247 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    397 引用 • 3418 回帖
  • 反馈

    Communication channel for makers and users.

    123 引用 • 906 回帖 • 196 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 292 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 622 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 11 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 6 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 4 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 108 关注
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 77 关注
  • 安全

    安全永远都不是一个小问题。

    189 引用 • 813 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 450 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    7 引用 • 26 回帖
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 232 回帖 • 8 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    162 引用 • 473 回帖