前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《面试季》经典面试题(一)

《面试季》经典面试题(一)

作者头像
IT学习日记
发布2022-09-13 12:41:53
2080
发布2022-09-13 12:41:53
举报
文章被收录于专栏:IT知识进阶学习
  • 💂 个人网站: IT学习日记
  • 🤟 版权: 本文由【IT学习日记】原创、需要转载请联系博主

前言

  • 大家好,这里是IT学习日记,相信大家对今年IT的行情应该也有所了解了,从大厂到小厂,各种裁员消息。公司裁员我们无法决定,我们能做的就是不断提升自己,提前准备。
  • 本系列文章主要分享了之前博主真实面试中遇到的一些问题,希望能够帮助准备就业或者跳槽的朋友。

问题一: 简单介绍下你自己

  解题思路: 要回答好这个问题,首先要了解面试官询问的意图,而不是上来就像记流水账一样回答,这样给面试官的印象分就减少了。

  面试官询问这个问题,主要的意图大概有:

  1. 观察你是否有为面试提前做准备,如果有提前准备,回答的时候就不会磕磕巴巴的。

  2. 观察你的语言表达能力,如果你的回答东一点、西一点,印象分会减少。

  3. 为后面的面试问题做铺垫,面试官可能会根据你自我介绍的点进行相应的拓展进行面试,比如你说擅长处理大数据,他可能会问你与大数据相关的知识,如高并发情况下,大数据如何保障效率。

  4. 观察你的总结能力,面试官让你自我介绍,绝对不是让你把简历上的东西再说一遍,而是想看你如何通过简短的几分钟,能够将自己的优点以及和面试这份工作的契合度有多少,虽然只是简短的几分钟,但是也是让面试官留下好印象的机会。

  知道了面试官询问的意图,那么我们就要有相对应的处理方案:

  1. 提前准备 仔细阅读面试岗位的招聘要求,列出自己擅长的技术点,这样自我介绍的时候才能够将自己的优点跟招聘的要求联合起来。

   如:招聘上要求掌握XX技术的优先,你在自我介绍的时候可以将这个XX技能联系你之前的工作项目介绍,这样会让面试官对你的印象大大加分,他会认为你是提前有准备,表明你是很重视这个工作的,但是一定要提前了解这个技术,因为面试官可能会通过这个进行深入的场景询问。

格式如下: 我知道贵公司招聘这个岗位要求中提到要掌握XX技术,这个技术我自认为自己擅长/我有使用过,因为在之前的XX项目中,处理XX问题时,我独立使用XX技术完成的功能开发。

  2. 控制时间

  面试官让你简单的介绍自己,不是想在那里听你长篇大论,而是想通过你的表达,快速了解你和工作的契合度。时长最好控制在2-3分钟,所以在面试前一定要将自我介绍的问题摘抄到纸上,平常多多来练习。

  此时,你只需要简单介绍个人信息,然后简单介绍自己之前做过的项目和使用的技术。

格式如下:我叫XXX,来自XX,毕业于XX学校XX专业,有XX年工作经验,参与过XX个项目,在XX项目中,我主要负责XX功能开发,使用了XX技术。

  3. 保持自信

  无论你对面试是否有把握,你都要时刻保持自信,因为面试是双向选择的过程,而不是去乞求,即使这个面试失败了,可以总结原因,下次面试时改进

  而不是,还没有开始面试就感觉低没有了自信,在面试官看来可能会认为你跟简历描述的不一样,在心里给你打了个大大的问号,从而让自己处于弱势方,即使面试成功了,后面谈论薪资的时候你也会处理弱势方,所以,无论如何,面试过程请一定保持自信

问题二: String为什么是final的?

  • 这个问题主要从安全性和效率两方面进行回答:
  • 安全性: String是最被使用的类之一,类中包含许多对于程序底层代码的调用,定义成为final类,不能被继承,所以不会被修改,从而避免了因为继承而带来的安全隐患。
  • 效率性: 定义成final类,保障了线程安全,在多线程时无需加锁,提升了效率。
  • 实现了String创建HashCode的不可变性: 因为String是不可变的,所以在创建String类的时候hashcode就被缓存了,调用时不需要重新计算。这也使得String很适合作为Map的key值,字符串处理的速度要远快于其他的键对象。
  • 为了实现字符串池: 只有字符是不可变时,字符串池才可以实现。

问题三: String、StringBuff、StringBuilder的区别

  • String是不可变的,而StringBuffer、StringBuilder是可变的。
  • String、StringBuffer是线程安全的,StringBuilder是线程不安全的。
  • 执行效率: StringBuilder > StringBuff > String

问题四: abstract、final、static关键字的区别?抽象类可以继承实体类?抽象类可以实例化?

  • abstract表示抽象的,可以用来修饰类、方法,分别表示抽象类,抽象方法,抽象类不可以直接创建对象实例,抽象方法需要被继承的子类重写。
  • abstract关键字不能与private、final关键字一起公用。
  • final表示最终的,可以用来修饰属性、方法、类,分别代表了属性不可以变(常量),方法不可被重写,类不能被继承。
  • final、private修饰的方法不能被覆盖,static修饰的方法可以被覆盖。
  • static表示静态的,能够修饰类、方法、变量、代码块,被它修饰的方法和变量可以直接通过类名进行访问。
  • 抽象类可以继承实体类,抽象类不能实例化。

问题五: 声明和定义的区别

  • 声明: 向编译器介绍"名字",相当于标识符,此时还没有分配有存储空间,如:Integer a;
  • 定义: 为声明的"名字"分配存储空间,如:Integer x= 10;
  • 区别联系: 把不需要建立存储空间的变量成为"声明",把需要存储空间的称为"定义"。

问题六: HashMap和HashTable的区别

  • 作者不一样
  • 产生的时间不一样(HashMap是JDK1.2时产生的,Hashtable是JDK1.0是产生的,且Hashtable不遵循驼峰命名)
  • HashMap不是线程安全的,Hashtable是线程安全的。
  • 继承的父类不一样,HashMap继承的父类是AbstractMap,Hashtable继承的父类是Dictionary
  • 对外提供的API不一样,HashMao提供的containsKey/containsValue来判断key/value是否存在,Hashtable提供了contains方法来判断key是否存在。
  • 对Null key和Null Value的支持不同: Hashtable不支持存在key和value为null,因为在put元素的时候,它会直接调用key.hashCode(),和判断value是否为空,为空则会抛出空指针异常。HashMap允许存在一个key为null,多个value为null的情况。
  • HashMap线程不安全,但效率高于Hashtable,Hashtable给每个方法都加上了synchronized,所以线程安全,但是效率比HashMap低。
  • 遍历方式不同,HashMap使用Entry数组方式进行遍历,而Hashtable使用Enumeration方式遍历,JDK1.8后使用fail-fast方式。
  • 初始化容量大小和扩容大小不同: HashMap的默认大小是16,扩容为原来的2倍。Hashtable默认大小是11,扩容为原来的2n+1。
  • 创建大小时如果有给定大小,则HashMap使用直接给定的值,而Hashtable则会将其扩容为2的幂次方。

问题七: 解决Hash冲突的方法

  • Hash冲突(碰撞): 两个不同的元素,但是Hash函数值一样。
  • 开放定制法
  • 再哈希法
  • 链地址池
  • 建立一个公共溢出区

问题八: final、finally、finalize的区别

  • final用于修饰属性、方法、类,分别表示属性不能被重新赋值(常量)、方法不可以被重写、类不能被继承。
  • finally是异常捕获语句的一部分,通常出现的形式是:try...catch...finally。finally表示总是执行。
  • finalize是Object中的一个方法,它是由垃圾回收器进行调用的,只有当垃圾回收器回收对象的时候,会调用该对象的finalize方法。

问题九: equals和==的区别

  • 针对基础数据类型,没有equals方法,只有==,==比较的是他们的值。
  • 针对引用类型,则分以下的情况:
    • 基础类型对应的包装类型(8种),因为重写了equals方法,所以它们的equals比较的是对象的值
    • "=="比较的是对象对应的内存地址值是否相等,equals默认比较的也是对象存在内存中地址值。

问题十: 重写(override)和重载(overload)的区别

  • 重写存在于继承关系下,private和final修饰的方法都不能被重写,构造方法也不能被重写。
  • 重写表示子类和父类中有方法名称、方法参数、返回值一样的方法,子类继承父类时可以重写这个方法的逻辑,当创建这个子类对象时,调用到这个方法的时候,就会去执行子类重写后的方法逻辑,相当于把与父类相同的方法的逻辑覆盖了,这是面向对象编程中多态性的一种表现。
  • 重写要遵循"两同两大一小原则","两同"表示:方法名称、参数类型(包括顺序)与父类方法一致,"两大"表示:子类返回值类型、子类抛出的异常类型要小于等于父类的返回值类型和异常,“一大”表示:子类的访问权限要大于等于父类抛出的异常。
  • 重载: 表示在一个类中有多个相同名称,但是参数列表不同的方法。
  • 重载中的参数列表不同包括: 参数个数不同,参数类型不同,和参数顺序不同。
  • 重载和参数的返回值类型无关

小结

   不积跬步,无以至千里;不积小流,无以成江海。今天播种努力的种子,总会有一天发芽!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/03/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 问题一: 简单介绍下你自己
  • 问题二: String为什么是final的?
  • 问题三: String、StringBuff、StringBuilder的区别
  • 问题四: abstract、final、static关键字的区别?抽象类可以继承实体类?抽象类可以实例化?
  • 问题五: 声明和定义的区别
  • 问题六: HashMap和HashTable的区别
  • 问题七: 解决Hash冲突的方法
  • 问题八: final、finally、finalize的区别
  • 问题九: equals和==的区别
  • 问题十: 重写(override)和重载(overload)的区别
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档