深圳开思时代科技有限公司社招Java工程师(三面)

介绍和寒暄略……

  1. 谈谈你对JVM的了解?-------相当于一台运行Java代码的计算机,其结构包括:字节码指令集、寄存器、栈、垃圾回收、堆和存储方法域,运行在操作系统之上。其代码的执行是编译成class文件,装载到类加载器编译执行……
  2. JVM内存区域?--------上一个问题的延续,画个图一块一块地阐述下即可。计数器,每个线程都需要一个独立的计数器来标记字节码执行的行号指示……。虚拟机栈,线程私有的,存放方法执行的局部变量表、操作数栈、动态链接、方法出口等信息,方法的调用与执行,代表着栈帧在虚拟机栈出栈入栈。本地方法栈为Native方法服务与虚拟机栈类似的服务。Java堆,所有线程共享的区域,存放实例对象,也是GC管控的主要区域。方法区,所有线程共享的区域,存放类信息、常量、静态变量等(永久代)。常量池,属于方法区的一部分,存放编译期存放的各种字面量和符号引用……
  3. 垃圾收集算法?--------标记清除算法,见名思义标记所需要回收的对象后,统一回收,但是会产生不连续的内存碎片。复制算法,将可用内存分成两个大小相等的空间,每次只使用其中一块,当一块使用完将存活的对象复制到另一块,然后GC清理使用过的这一块。标记整理算法,同清除一样,先标记然后将存货的整理到一端,直接清理另一端。分代收集算法,就是根据不同的区域进行对应的算法选择,新生代由于存活对象远远小于死亡对象所以用复制算法,老年代对象存活率比较高,所以用标记整理算法……
  4. 你了解哪些垃圾收集器?------G1收集器,JKD7升级的并行并发,分代收集,可预测停顿……
  5. 创建线程的方式?-----------固定长度:newFixedThreadPool(参数为固定长度);缓存的线程池:newCachedThreadPool();……这种背API问题有点low,不知道要考察的是什么,总不能对计算机开发行业的考察记忆力吧。。。
  6. 怎么保证多线程的运行安全性?--------互斥性,可见性,有序性……
  7. 关于多线程锁的升级原理?--------只知道级别由低到高:无状态锁,偏向锁,轻量级锁和重量级锁(只许升级不许降级),至于原理实在不清楚。。。。
  8. HTTPS原理,以及安全的概念是怎样理解的?---------- 画个草图解释浏览器和客户端的数据传输和证书验证……客户端发送请求给服务器,服务器返回证书和公钥,客户端判断其合法性,如果合法及向下执行生成随机数,通过公钥加密随机数传输给服务器,服务器通过私钥解密随机数,通过传入随机数的对称加密传输给客户端,客户端根据本地存储的随机数进行解密。至于安全方面,涉及到中间人劫持的攻击,个人也不太了解……
  9. MySQL数据库的事务以及事务的特性?-------------所谓事务就是对数据库一系列操作的集合,集合中的每一个操作要么全部成功,只要有一个失败就回退到事务发生之前的状态。其特性为ACID,即原子性,就是前面操作集合的完整性;一致性,只包含成功事务提交的结果,就说数据库从一个一致性状态变到另一个一致性状态;隔离性,一个事务的执行不被其他事务干扰;持久性,提交后的事务对数据库的数据改变是永久的……
  10. MySQL的隔离级别?------读取未提交的数据,会产生脏读数据,因为另一个事务可能会回滚;读取提交数据;可重复读,默认事务隔离级别,产生幻读;可串行化,强制事务按序执行,但会导致大量的超时现象和锁竞争……
  11. 谈谈你对SpringBoot的了解?---------属于Spring系列的框架之一,简化了原来Spring应用程序的配置和部署。比较独立的Spring应用程序,内嵌了tomcat容器,通过maven依赖简化了原来的包依赖、配置依赖……
  12. SpringBoot是如何工作的?--------SpringBoot会根据使用@EnableAutoConfiguration批注添加到项目中的依赖项自动配置应用程序。@SpringBootApplication注释和main为应用程序的入口点。@ComponentScan自动扫描项目中包含的所有组件。spring-boot-starter-*的形式引入依赖。(一般在main类中@SpringBootApplication直接包含了其他注解)……
  13. 聊项目,特别其中的项目架构设计模式?--------注意:不是代码设计模式!刚开始也以为是代码(单例、工厂等)设计模式。——实际就是从单体架构的一系列发展,每次遇到某方面的瓶颈,就引入对应的技术或者增加硬件机器的方式。比如单体架构中,一台服务器中的web容器和数据库有资源的竞争,则数据库和web容器分开部署,随着业务访问人数的大量增加,数据库又成了瓶颈问题,那就增加缓存(redis或memcached)第一次访问数据库,后续访问缓存。如果并发请求持续增加web容器的压力有上来了,那就增加web服务器,通过Nginx将请求分担到各个web容器……以此分库分表,微服务抽离……

总结:数据库和底层JVM,以及项目的一些经验为主,其他的问题感觉相当没有意义……



#社招##面经##Java工程师#
全部评论
大部分了解过,但还是觉得好难,一看是社招。校招应该不至于这么难
点赞 回复 分享
发布于 2021-03-09 15:53

相关推荐

不愿透露姓名的神秘牛友
05-29 15:00
教授A:“你为什么要讲这么久,是要压缩我们对你的评议时间吗?你们别以为这样就能够让我们对你们少点意见。” “从你的发言和论文格式就能知道你的性格啊。”……. 感觉被狠狠霸凌了。
码农索隆:“教授您好,首先我想回应您提出的两点疑问。” “关于我讲解时间较长的问题:这绝非为了压缩各位老师的评议时间。这份毕业设计是我过去几个月倾注了全部心血的作品,从构思、实验、调试到撰写,每一个环节都反复打磨。我深知时间宝贵,所以选择详细讲解,是希望能更完整、清晰地展示它的核心创新点、实现过程和验证结果,确保老师们能充分理解它的价值和我的努力。我完全理解并重视评审环节的意义,也做好了充分准备来听取各位老师的专业意见和批评。几个月的研究都坚持下来了,我怎么可能害怕老师们的点评呢?今天站在这里,正是抱着虚心学习、诚恳求教的态度而来。” “如果我的展示确实超时,影响了后续流程,烦请老师们随时示意,我会立刻调整。我非常期待并预留了充足的时间,希望能听到老师们宝贵的建议和深入的讨论。” “其次,关于您提到‘从发言和论文格式就能知道我的性格’。教授,我对此感到非常困惑和不安。学术研究和答辩的核心,难道不应该是作品本身的质量、逻辑的严谨性、数据的可靠性和结论的合理性吗?论文格式有明确的规范要求,我尽最大努力遵循了这些规范。如果格式上存在疏忽或不足,这属于技术性、规范性的问题,恳请老师们具体指出,我一定认真修改。但将格式问题或个人表达风格(如讲解时长)直接上升为对个人性格的评判,甚至以此作为质疑我学术态度和动机的依据,这让我感到非常不公平,也偏离了学术评议应有的客观和严谨原则。” “我尊重每一位评审老师的专业权威,也衷心希望能得到老师们对我的工作内容本身的专业指导和批评指正。任何基于研究本身的意见,无论多么尖锐,我都会认真聆听、反思并改进。但我恳请老师们,能将评议的焦点放在我的研究本身,而不是对我个人进行主观的推断或评价。谢谢各位老师。”
点赞 评论 收藏
分享
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
点赞 评论 收藏
分享
评论
13
39
分享

创作者周榜

更多
牛客网
牛客企业服务