美文网首页面试
远光软件:2019校招 Java开发 一二面

远光软件:2019校招 Java开发 一二面

作者: 阿臻同学 | 来源:发表于2019-10-20 23:53 被阅读0次

远光软件:2019校招 Java开发 一二面

面试题

一面 电话面试:

  • java中public、private等的作用

    修饰方法、属性的访问权限。

  • 介绍一下数据库设计的三范式

    第一范式:表不可再分

    第二范式:消除了非主属性对主属性的部分函数依赖

    第三范式:消除了非主属性对主属性的传递函数依赖

  • 介绍几个常用的Map容器

    • HashMap:<Key,Value>键值对映射,支持null
    • ConcurrentantMap:jdk1.8以后支持并发的Map容器
    • HashTable:不支持null的Map容器
    • TreeMap:有序的Map容器
  • 在有很多张表连接的非常复杂的查询时如何优化

    主要解决问题所考虑的角度:

    1. 优化查询中的连接
    2. 优化表的索引
    3. 优化查询中的查询条件
    4. 从底层执行计划进行优化
    5. 使用explain对查询的执行情况进行分析

    具体的知识点很复杂,要考虑的内容也很多,这里仅给出网上可以参考学习的一些博客帖子:

    参考:

    【MySQL之查询】重要数据库查询优化经验总结

    MySQL索引原理及慢查询优化

    数据库SQL优化大总结1之- 百万级数据库优化方案

  • 说一下对RESTful的理解

    RESTful,全称 Representational State Transfer,表示性状态转移,是一种Http接口风格。
    主要特点是:

    • 一般使用jsonxml等格式传输数据。
    • 在接口的调用上采用标准Http的方法如GETPOSTPUTDELETE等进行“查询”、“增加”、“更新”、“删除”等操作。
    • 客户端和服务器之间是无状态的。

    百度百科:RESTful

  • 数据库进行复杂查询时,如何优化查询的响应时间

    与上面一道题的区别,在于面试官在这个题中想从系统、架构方面给出解决或优化方案,上一题则偏向于只考虑数据库本身。

    • 考虑使用Redismemcache等,作为MySQL的缓存层

    • 使用主从数据库进行读写分离:

      一般业务中,读操作频度远大于写操作,容易成为性能瓶颈,将数据库分为主从两个,主数据库负责写操作,从数据库定时从主数据库中同步数据,负责处理读操作。

    • 分布式部署:

      在仅适用主从架构的基础上进一步优化,部署多个数据库集群,每一个集群中再进行主从读写分离。

  • 介绍下JDBC、Hibenate、MyBatis

    JDBC:是java用于连接数据库的驱动,HibenateMyBatis都是基于JDBC进行工作的。
    HibenateMyBatis都属于Java的ORM框架,用于将关系型数据库映射到对象中,封装了数据库相关的操作。
    二者的区别主要在于MyBatis是可以封装自己写的SQL代码,而Hibenate则只能使用其自带的一些操作,在业务操作复杂时,MyBatis具有更好的灵活性,能根据需求进行SQL的编写以及优化。

  • MyBatis连接不同数据库如何配置(配置多数据源)

    MyBatis的配置文件中,在environments节点下,通过environments节点针对每一个数据源进行具体的配置。

  • 除了SSM、SSH外,是否关注了解其他的开源框架

二面 现场面试:

  • 画下项目的大致架构

  • 项目答辩PPT是如何分节组织的

  • 职业规划

  • 项目团队中扮演的角色


  • Java虚拟机常用的参数

    -Xmx:堆最大容量

    -Xms:堆初始大小

    -Xmn:新生代大小

    -Xss:每个线程堆栈大小

    -XX:PermSize:持久代大小

    -XX:MaxPermSize:持久代最大值

    -XX:SurvivorRatioEdenSurvivor大小比值

    -XX:NewRatio:年轻代与老年代大小比值

    -XX:+HeapDumpOnOutOfMemoryError:内存溢出时自动Dump出当前的内存堆转储快照

    可配置的参数较多,仅列举部分常用的参数,参考:

  • Jdbc常用的配置

    password:密码

    user:用户名

    socketFactory:用于创建套接字连接的类

    connectTimeout:套接字连接超时

    socketTimeout:网络套接字连接超时

    autoReconnect:自动重连

官方参考:Configuration Properties

  • MongoDbmysql异同

    mongodb是非关系型数据库,mysql为关系型数据库。

    在数据的逻辑结构上,前者对数据没有固定的格式要求,而后者则需要遵循建表时的规范;

    在可拓展性上,因为mongodb没有固定的数据结构,具有更好的灵活性、拓展性,所以在业务变化时无需像mysql一样对数据表进行修改;

    在效率上,在数据量大时,非关系型数据库也有更好的性能。

  • Linux常用的发行版本

    CentOsUbuntukali linux

  • 会用、常用的Linux命令

    lscdrmmvheadcattailchmodmkdirkillps等。

  • Linux如何查看内存、CPU等的使用情况

    free:打印出当前内存的使用情况

    top:对各进程的CPU、内存等的使用情况持续监控,类似于windows中的任务管理器

场景、感受

一面

一面中,除了项目外,大部分问的偏基础,在数据库方面问的问题较多,且涉及到了在较复杂的业务需求时的数据库优化问题。平时项目规模较小,在数据库优化的那几个题答的不是很好。最后对于开源项目的关注在此前的面试、看过的面经中基本没有遇到,比较出乎意料。

面试的关注点主要是还是集中在个人的技术以及对技术的关注和了解上,整体属于比较普通的技术面。

二面

二面时,面试官是大数据部门的经理,对项目的架构规划问的比较多,一开始就让对两个曾经项目中的架构方面做介绍,以及比赛项目答辩的PPT章节划分,介绍的同时会问为什么要这样设计。在问技术相关的问题时,在发现是我比较熟悉的领域后就直接跳过了,在我不怎么熟的领域时则让我尽可能回答我知道的,感觉在试探我的知识面。最后是职业的规划,问的也很细,在说完自己的想法后,面试官结合我之前在架构方面的回答,提了很多今后职业发展的建议和项目流程的理解(被上了一课,收获颇丰),然后HR面。

二面考察的很广,面试官不仅想知道我会啥,还我那些不会的基本上问了个遍,应该是要对个人的能力、知识面有一个准确的评估。除了开发直接相关的知识外,在项目管理和架构上也问了很多,给了很多建议。属于专业岗位先关的非常综合、非常有意义面试。

总结

  1. 除了学习应用的知识外,还需要保持对领域、技术的关注。(一面被问到对开源项目的关注)
  2. 对于项目的架构和流程值得更加深入地去思考:一个项目在开发团队内部、部门之间、客户与公司之间的整体流程与沟通,所选的技术与其他技术的异同对比、所选技术与架构能达到的效果、公司与其他竞品公司在公司整体以及产品上的横向对比。(二面被上了一课)
  3. 在今后的职业规划中,也需要尽可能的去全方面提升能力,当某项任务能提升某项自己有待提升的能力时,值得主动去和上级申请。(二面被上了一课的另一个内容)

相关文章

网友评论

    本文标题:远光软件:2019校招 Java开发 一二面

    本文链接:https://www.haomeiwen.com/subject/bhrzmctx.html