zoukankan      html  css  js  c++  java
  • 2021年11月2日,面试经历

    因为大学期间有过java后台和安卓的开发经验,还有就是一些嵌入式的开发经验。所以开始想去做一个web后台的开发,但是因为青岛薪资给的是7K的薪资,除去一些住房和吃饭觉得就没有多少存款了,但是青岛哪家公司,我在职期间基本是早上9:00 上班,晚上5点或者7点下班,因为公司7点有餐券。不过我想要买房子,然后就想要个工资稍微高点的,然后烟台一家公司正好找人,招嵌入式的人,我觉得也是对这方面熟悉,我就来到了这里,期初工资是8K包吃住,但是工作时间是早上8:00 到 晚上8:30,这些我觉得还好,年轻也有拼劲,但是因为和老板(部门经理)因为技术原因,吵了以下,虽然没有那么严重,但是我想了很多问题,我现在是普通员工,以后如果管理项目,那我再面临这种情况我完全没有很好的办法去解决这个困境,当然我可以不理它的政策。但是我总觉着这是一个定时炸弹,所以想规避掉他。

    于是开始了,在职撒网的历程,我首先想到的是java后台的开发,因为学习并使用过SSM框架,对Spring boot有过学习,对Spring Cloud有过学习。

    在这里记录面试的问题,让自己能够针对面试做出反思,也及时改正,也对以后的面试奠定基础。

    第一家公司问了几个问题,

    1. == 与 equals的区别,因为我对这其中的运行逻辑有了解,

    我是这样回答的:== 是进行地址的比较,而equals是进行的是数值的比较。

    2. 抽象类能被final修饰吗?因为我没有这样干过,也不知道具体的运行逻辑。

    我的回答是:我没有这样用过,我认为这样是不可以的。   

    网上查到的答案是:final修饰的类是不能够被继承、修改的,但是抽象类是要被继承的才可以。所以是不可以的。

    3. Stringbuilder、Stringbuffer的区别因为之前的时候看过这些函数的讲解,主要涉及就是线程安全与不安全,不过底层实现没有看过。

    我就直接回答了:buffer是安全的,而Stringbuilder是不安全的。

    网上查找的资料是:执行速度 StringBuilder > Stringbuffer > String,    StringBuffer是有同步锁的,这就保证线程的安全,所以多线程情况建议使用buffer,单线程使用Builder,针对String 与这两个的区别是数据量的问题。

    4. ArrayList和LinkedList的区别是什么,听到这个问题我当时就懵逼了,因为我之前没有使用过LinkList,所以这个问题我就介绍了下ArrayList的信息。

    我就说:List使用的时候是通过List<> a = new ArrayList<>();

    网上查询的资料是:ArrayList是查询快,LinkList是增删快。ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构;

    5. HashMap和hashTable的区别是什么,我这个问题我也不清楚具体实现,但是我知道hash表的实现逻辑

    我就讲述了:hash怎么进行实现讲述了一遍。

    网上查询的资料是:HashMap是线程不安全的,HashTable是线程安全的,使用的是Synchronize,hashMap是可以存放null值的。

    hashTable的扩容方式是newsize = olesize*2+1 ,

    hashMap的扩容方式是newsize = oldsize*2

    6. 数据库的操作,需要优化所有数据怎么进行搜索,我听到这个我也很懵逼,哎感叹学的少了。

    我说的都是错误的:使用in等方式,通过加入where的方法进行查询。

    网上的资料是:

    建立索引(提高查询检索的性能,创建唯一索引,创建主键,归类)

    减少表之间的关联

    优化sql,尽量让SQL很快定位数据,不让SQL做全表查询,应该走索引,把数据量大额表排在前面

    简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据。

     7. 如何开辟一个线程,我之前使用基本就是Thread thread = new Thread,然后thread.start;

    我是就只说了上面的哪一种方式。

    网上的资料是:

    一个类继承Thread方法 A a = new A(); a.start();

    另外一个实现Runnable接口 C c = new C();Thread t = new Thread(c);t.start();

    另外一个是在代码中直接Thread thread = new Thread(new Runnable()....)。

    经过这次面试感觉数据库这一部分和java的底层还不是很熟悉,所以需要将数据库重点学习,了解java底层源码。

    Java源码,逻辑
    jvm
    kafka
    redis
    SSM
    spring
    spring boot
    spring cloud
    Mysql 语句优化

    我觉得这些资料得学习一些。

  • 相关阅读:
    socket阻塞与非阻塞,同步与异步
    Python列表切成多个/生成多个空列表
    virtualbox 下windows与虚拟机实现文件共享---挂载
    centos安装mysql
    centos安装Python2.7
    在遍历或者迭代过程中对集合进行增删 都会发生异常(迭代器的并发异常)
    List
    LinkedList
    增强for循环
    Collection中的迭代器
  • 原文地址:https://www.cnblogs.com/jiang-bei/p/15498500.html
Copyright © 2011-2022 走看看