深圳市法本信息技术股份有限公司Java工程师社招(面经一)

招聘简章的技术栈要求:
  • 具备扎实的Java语言基础,对JVM原理有一定的了解。
  • 熟悉多种设计模式,理解IO、多线程、网络通信、缓存等技术。
  • 熟悉Spring Boot、Spring Cloud框架。
  • 熟悉MySQL等数据库,能够进行性能调优。
  • 熟悉Elasticsearch搜索引擎。
  • 熟悉Linux操作系统常用命令。
  • 熟悉Docker等容器技术。
  1. java的加载过程?-----------主要有以下阶段:加载(将class、zip中的jar或war包等文件读取生成一个代表该类的java.lang.Class对象作为方法区这个类的各种数据入口)——>验证(确保Class文件符合虚拟机的要求)——>准备(为类变量分配内存并设置初始值)——>解析(虚拟机将常量池中的符号引用替换为直接引用的过程)——>初始化(执行类中定义的Java程序代码)——>使用(执行类中的构造器)——>卸载
  2. Java垃圾回收机制?---------Java虚拟机运行时数据某个区域达到阀值就会激发JVM对已经死亡的对象进行垃圾回收,对于存活的对象进行状态的转移(新生代->老年代……)
  3. 如果判断一个对象是否存活?--------引用计数法,一个对象有一个引用进行关联就加1,断开引用即减1,直到计数器为0表示没有任何关联引用。可达性分析法,通过一系列的GC roots对象作为起点搜索,如果一个对象和GCroots之间没有可达路径,而且经过了两次标记后仍然为不可达,则面临回收。
  4. Java中的垃圾收集方法有哪些?--------标记清除法,复制算法,标记整理法,分代收集法……
  5. HTTP协议HTTPS原理?------HTTP无状态协议,地址解析(客户端请求路径:协议名、主机名IP、端口、对象路径)——封装HTTP——封装TCP(三次握手)——客户端发送——服务器响应——关闭TCP连接。HTTPS安全机制,加入了证书验证……具体的我也不太清楚。
  6. 线程池的作用?-----------通过重复利用已创建的线程降低创建销毁造成的系统资源内耗。任务到达时,不需要等待线程的创建直接可以执行,提高执行效率。
  7. 如何创建线程池?----------Executors的四个方法:FixedThreadPool/SingleThreadExecutor/CachedThreadPool/ScheduledThreadPool,但允许请求的队列长度和允许创建的线程数量导致OOM。
  8. 如何规避上面的OOM?----------ThreadPoolExecutor的构造方法创建线程池。
  9. Atomic类的理解?-----------JUC下的atomic包下,基本类型/数组类型/引用类型原子类等原子类,并发情况下不用对共享数据进行加锁也可以实现线程安全。底层采用的是CAS和volatile以及native方法来保证原子操作。
  10. AQS的原理和了解?---------JUC的lock包下,用来构建锁和同步器的操作。如果请求的共享资源属于空闲状态,则该线程锁定并操作,其他线程阻塞。对资源有独占和共享两种方式,分别有对应的类去实现。
  11. 你了解哪些设计模式,手写一下设计模式的伪代码?-----------单例、工厂等模式……略。
  12. SpringBoot核心配置文件有哪些,区别是什么?--------application.properties或者yml结尾的配置,没多大的区别,无非是格式不同……
  13. Springboot的核心注解组成?--------EnableAutoConfiguration注解能够让Springboot根据依赖jar包自动配置Tomcat或者Springmvc。 SpringApplication在主方法所在的类中做调用,开始程序的执行。
  14. springboot的监视器的理解?---------没了解过(略)
  15. 项目等一系列问题,以及生产环境中的JVM调优?---------略

总结:线程并发相关问题比较多,以及springboot的一些了解。


#社招##面经##Java工程师##法本信息#
全部评论
这个是外包吗
点赞 回复 分享
发布于 2022-03-15 12:55
。。这是初级的吗,我怎么感觉我都没见过这些问题🤐
点赞 回复 分享
发布于 2021-08-23 09:21
感谢分享面经!欢迎参加过社招的牛友发社招面经拿京东卡!~ -------------------- 活动:社招面经征集|参加过社招的牛友,来发面经吧,拿京东卡
点赞 回复 分享
发布于 2019-12-11 10:21
外包呀
点赞 回复 分享
发布于 2019-12-11 08:45
法本不是外包么
点赞 回复 分享
发布于 2019-12-11 07:57

相关推荐

没有笔试环节,只有一轮面试。面试体验良好,面试官很和蔼。项目提问1.你的项目架构是什么回答:前端VUE,后端Springboot,持久层MySQL+Mybatisplus2.你们是怎么做需求分析的3.你负责的工作内容是什么,在过程中遇到了哪些具体的挑战4.你们的测试用例的格式5.你认为你为什么能胜任这个岗位6.你三年内的工作规划是怎么样的第一年主要学习所在项目组的技术栈和框架,尽快跟上团队步伐。在熟练掌握项目后,我希望更加深入了解公司的业务和管理流程,学习更多的管理知识和技巧,提升自己的眼界和格局。7.你有用过哪些AI工具我主要使用DeepSeek辅助我的工作流程,使用AI插件去做代码调试8.软件测试的定位和意义是什么他是软件生命周期中不可或缺的一环,在保证软件的质量,提升用户使用体验和系统安全稳定的领域起着重要的作用。9.软件测试人员应当具备的能力有哪些10.测试人员会做那些事情可能要写功能点,要根据功能点写测试用例,并且测试有问题要提交bug报告。在自动化测试方面,可能要设计测试工具的开发,分为UI自动化测试和接口自动化测试。1.会参与需求的分析与测试策略制定a.参与需求评审会议,分析需求的可测试性b.指定测试计划2.测试设计和用例开发a.测试场景建模b.测试用例编写3.测试执行与缺陷管理a.分层测试实施(单元,集成,系统测试)b.缺陷全生命周期管理4.质量评估与报告输出a.质量指标分析b.测试报告编制5.自动化测试实施a.接口自动化b.UI自动化6.跨团队协作a.开发写作b.产品沟通7.测试过程改进8.技术研究与创新11.有了解过自动化测试吗回答:有了解过Pytest,Selenium(其实不太会)面经环节12.重载和重写的区别是什么重载指的是函数或者接口,针对不同的输入参数进行重载,让这个接口可以接受不同类型的输入参数;重写指的是子类重写父类的函数,使其更加符合子类的特征要求13.有用过泛型吗核心价值是类型安全,消除运行时的ClassCastException风险向一个List<String>中添加Integer类型的元素,编译器会直接报错,而并非在运行时崩溃,从而将错误发现提前到开发阶段,显著提升代码可靠性。比如写方法 add(int a,int b),add(double a,double b)现在只要写add(T a,T b) return a+b集合里面,以前List = new ArrayList();List.add("hello")String str = (String)list.get(0)现在List<String> = new String<>();List.add("hello")String str = list.get(0);是为了存和取都不会出错ClassCastException风险可以实现通用代码模板,例如List<T>,Map<K,V>可以存储任意类型对象反问环节1.业务方向和架构业务方向有餐厅,供应链等系统的开发测试。主要做敏捷开发,两周迭代一个版本,前一个星期分析需求和开发,后一个星期测试。主要工作内容是测试业务接口和功能,开发自动化测试平台,分为接口自动化和UI自动化。2.是否加班不考勤,一般9点到,6点走,偶尔会加班。
查看13道真题和解析
点赞 评论 收藏
分享
评论
8
52
分享

创作者周榜

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