深圳开思时代科技有限公司社招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

相关推荐

03-13 00:04
已编辑
吉林大学 Java
约面的挺突然。。狠下心接了1.自我介绍2.讲讲JAVA的反射3.可以继续讲讲AOP,动态代理[ 因为讲反射不小心吟唱到了例如AOP的动态代理,但是这块记忆的非常不熟,结果磕磕绊绊 ]4.项目我看你写了AOP和注解,具体怎么实现滑动窗口限流的[ 梦到什么说什么,吟唱八股发散千万不要散到自己不熟悉的区域 ]5.也讲讲为什么另一个项目选择令牌桶,具体流程6. OK,讲讲 Redis 的数据类型?还有吗?就了解这五种嘛[ 把5个的基础类型从应用对比到历届底层全都吟唱了一遍。一句还有吗直接没力气了,简历就写了理解5种,别的我是真一点没看TT ]7.讲讲Redission分布式锁实现8.这个指数退避怎么实现的9.在这里有考虑去保障幂等性嘛10.这里为什么使用指数退避呢? 什么时候用均匀重传[已经晕过去了说不了解,刚说了后就意识到,估计应该说指数退避能缓解压力防止下游服务器雪崩之类的]11.ok,那讲讲JMM12.讲讲RocketMQ如何保证的不丢消息13.讲讲RocketMQ延迟消息原理14.讲讲项目Redis实现会话记忆这一块15.如果ai调用function calling出现幻觉,有考虑怎么解决吗?[ 不了解,面试官说什么接口幂等化,高危操作人工防护,没在听,感觉人已经飞升了TT ]16.mcp了解嘛?和function calling有什么区别[ 依旧不了解,只能说了个前者规范架构抽象解耦,后者耦合高只能算个工具调用]17.AI生成代码的代码质量怎么保障,那平时如何review的呢18.算法。lc215  数组中最大第k个元素19.打算考研还是本科就业20.反问1️⃣有哪里不足,有哪些需要提高的部分。[主要说知识广度不够,多刷算法,让我别太紧张]2️⃣部门业务会做什么人生第二次面试。感觉大厂面试官的气场压力很大应该凉了不过这次面试非常锻炼心态,多面试,多面试。
冰炸橙汁_不做oj版:redis除了五种基本数据类型,其他的几种还是要掌握一下的,挺常用
点赞 评论 收藏
分享
评论
13
39
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务