每日六道java新手入门面试题,通往自由的道路


Posted in Java/Android onJune 30, 2021
目录
  • 1. 面试第一步,自我介绍。
  • 2. 请你简述下对面向对象的理解,面向对象和面向过程的区别?
  • 3. 那你再讲下面向对象的特征有哪些方面
  • 4. 请问:我们是否可以继承 String类?
  • 5. 我再问下final、finally、finalize这三者有什么区别吗?
  • 6. 请讲下String和 StringBuilder、StringBuffer之间的区别?
  • 总结

1. 面试第一步,自我介绍。

这个自我介绍,在整个面试当中可以说是第一步,如果你能把你想说的重点说出来,把面试官带到你准备好的技术点中,可以说,你这次自我介绍成功了!

那么说下自我介绍需要包含什么:基本信息,教育背景、工作经历、项目经历、个人成长等。

可以说模板基本类似,但是每个的技术点、工作经历、项目经历都大不相同。所以在自己把握的点当中突出出来,抓住面试官的眼球。

模板

例如:面试官您好,我叫xxx,18年毕业xx学校本科xx专业,毕业至今已有x年工作经验,在从事Java开发期间任职于x家公司。
第一家公司是xxx,这家公司是做xxx的,在java这一块我主要负责/参与的是xxx项目,在这个项目中主要负责xxx功能模块。在这家公司我收获成长最大的是xxx(技术和做事方面阐述),之所以离开这家公司是因为xxx(离职原因可以不说,就阐述下具体干了些什么)。

第二家公司也就是我上一任公司xxx,这家公司是做xxx,我在这家公司主要负责的是xxx,我在这家公司的收获是xxx,离开这家公司是因为xxx(离职原因可以不说,就阐述下具体干了些什么)。

平时的话我也会经常去学习技术,或者写一些技术博客比如我的公众号、CSDN博客有太子爷哪吒(也可以加一些自己平时的爱好,甚至写的什么博客,什么GitHub地址都行,能让自己加分就行!)

所以来说,这个比较广泛,可以自由发挥。打好第一步,后面的信息相对来说比较足点。我个人面试的话,经常特别紧张,但是一旦我自我介绍说好了,面试官问了我在自我介绍中提过的技术点,我个人就会相对自信点。跟面试官也会聊得比较久,比较开心。其实面试都是双向,他在选择你,你也在选择他,所以不必担心,不必过于紧张。把准备好的说出来就行啦!

那么在你自我介绍完后,我们开始进入面试阶段。

2. 请你简述下对面向对象的理解,面向对象和面向过程的区别?

那我们先考下你的基础知识吧!请讲述下这个问题。

1.个人理解:

  •  软件开发思想,先有面向过程,后有面向对象 。
  • 在大型软件系统中,面向过程的做法不足,从而推出了面向对象 。
  • 都是解决实际问题的思维方式 。
  • 两者相辅相成,宏观上面向对象把握复杂事物的关系;微观上面向过程去处理。
  • 面向过程以实现功能的函数开发为主;面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能 。
  • 面向过程是封装的是功能;面向对象封装的是数据和功能 。
  • 面向对象具有继承性和多态性;面向过程则没有 。

2.面向对象

  •  优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特 性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 。
  • 缺点: 性能比面向过程低。

3.面向过程

  • 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗 资源;比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发,性能是 最重要的因素。
  • 缺点:没有面向对象易维护、易复用、易扩展 。

嗯?讲的不错嘛!看来是有相对应的理解在里面啊!不错不错,我再考你一个问题。

3. 那你再讲下面向对象的特征有哪些方面

面向对象的特征有具体四个方面:封装、继承、抽象、多态。

  • 封装:封装把一个对象的属性私有化,同时提供一些可以被外界访问的访问。
  • 继承:继承是从已有类得到继承信息创建新类的过程,提供继承信息的类叫做父类,得到继承信息的类叫做子类。通过使用继承我们能够非常方便地复用以前的代码。
  • 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括了数据抽象和行为抽象。
  • 多态:所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发 出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中 实现的方法,必须在由程序运行期间才能决定。实际上就是用同样的对象调用同样的方法会做出不同的反应事情。

4. 请问:我们是否可以继承 String类?

不可以,在我们查看String源码的时候,可以发现:String类是被final修饰,是不可以被继承的。

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    .....
}

而final有什么作用呢?

  • 修饰类时:表示着该类不能被继承。
  • 修饰方法时:表示方法不能被重写。
  • 修饰变量时:表示变量不能被一次赋值,不能再修改了。

所以String被final修饰的好处有:安全,高效。 并且在当只有字符串不可变的时候,我们才能实现字符串常量池,字符串常量池可以为我们缓存字符串,提高程序的运行效率。

可以啊,一问多答,秒啊!既然提到了final这个关键字。那么

5. 我再问下final、finally、finalize这三者有什么区别吗?

  • final:修饰符(关键字)有三种用法:
    • 如果一个类被声明为 final,意味着它不能再派生出新的子类,即不能被继承,因此它和 abstract 是反义词。
    • 将变量声明为 final,可以保证它们在使用中不被改变,被声明为 final 的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改。
    • 被声明为 final 的方法也同样只能使用,不能在子类中被重写。
  • finally: 通常放在try…catch…处理异常中,代表着程序无论正常执行还是发生异常,这里的代码都会执行。 一般是把释放资源的代码放在finally块中。
  • finalize: 是Object类中定义的方法,Java中允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之 前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的。

可以,那再回到String这里,

6. 请讲下String和 StringBuilder、StringBuffer之间的区别?

首先String和 StringBuilder、StringBuffer它们都是可以存储和操作字符串的。

  • String它是使用final关键字字符数组来保存字符串,所以String对象是不可变的。
  • 而StringBuilder和StringBuffer都是继承自AbstractStringBuilder类,这其中也是用字符数组来保 存字符串,但是没有被final修饰,所以是可变的。
  • 但是StringBuilder中的方法没有synchronized修饰,所以它的效率会比StringBuffer高。
  • 安全方面的话:
    • String的对象是不可变的,所以它是线程安全的。
    • StringBuffer因为对方法加了同步锁,所以也是线程安全,但是StringBuilder没有加同步锁,所以 线程不安全的。
  • 性能方面的话:
    • 每次对String类型进行改变的时候,都会生成一个新的String对象, 然后将指针指向新的String的对象。
    • StringBuffer和StringBuilder每次修改,会可以对对象本身进行操作修改,而不是生成新的对象并 改成对象引用。
  • 使用场景:
    • 如果要操作少量的数据用 String 。
    • 单线程操作字符串缓冲区下操作大量数据用StringBuilder。
    • 多线程操作字符串缓冲区下操作大量数据 用StringBuffer 。

小伙子不错嘛!今天就到这里,期待你明天的到来,希望能让我继续保持惊喜!

总结

这篇文章就到这里了,如果这篇文章对你也有所帮助,希望您能多多关注三水点靠木的更多内容!


Tags in this post...

Java/Android 相关文章推荐
手把手教你用SpringBoot将文件打包成zip存放或导出
Jun 11 Java/Android
Java中使用Filter过滤器的方法
Jun 28 Java/Android
解决Jenkins集成SonarQube遇到的报错问题
Jul 15 Java/Android
Sleuth+logback 设置traceid 及自定义信息方式
Jul 26 Java/Android
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
Jul 26 Java/Android
Spring Boot 排除某个类加载注入IOC的操作
Aug 02 Java/Android
使用Spring处理x-www-form-urlencoded方式
Nov 02 Java/Android
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
Jan 18 Java/Android
Android自定义双向滑动控件
Apr 19 Java/Android
Java 异步任务计算FutureTask
Apr 28 Java/Android
Java Spring Lifecycle的使用
May 06 Java/Android
mybatis 解决从列名到属性名的自动映射失败问题
Jun 30 #Java/Android
Java基础之this关键字的使用
Jun 30 #Java/Android
Java图书管理系统,课程设计必用(源码+文档)
详解Java ES多节点任务的高效分发与收集实现
Jun 30 #Java/Android
mybatis中sql语句CDATA标签的用法说明
Jun 30 #Java/Android
总结Java对象被序列化的两种方法
Jun 30 #Java/Android
实体类或对象序列化时,忽略为空属性的操作
Jun 30 #Java/Android
You might like
使用adodb lite解决问题
2006/12/31 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
php+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
PHP的cURL库简介及使用示例
2015/02/06 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
Calzedonia美国官网:意大利风格袜子、打底裤和沙滩装
2018/07/19 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
招聘专员岗位职责
2014/03/07 职场文书
捐款倡议书
2014/04/14 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
四年级作文之植物
2019/09/20 职场文书
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记