JAVA初级工程师面试36问(一)
前几天,一个老家的小伙子正在找java初级开发工程师的岗位,问我一般会问什么问题? 第一时间听到这个,我在想:what? 除了刚开始找工作的第一年面试几家公司问了一些基础项东西,后面两家公司基本都是内推进去的,问的问题也是偏项目,偏实际,理论大概也没有问什么,当然,作为一个爱回答问题的我,是肯定要给他指明方向的,于是 ,我便综合各方面给他说了一些东西,同时记录下来,万变不离其宗.基础知识是学习一个新东西和升华一个东西必不可少的条件.
第一问: 请说一下String和StringBuffer、StringBuilder的区别是什么?
线程安全性:
String中的对象是不可变,线程安全
StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。
StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。
性能:
String 类型进行改变的时候,都会生成一个新的String对象,然后将指针指向新的String 对象。
StringBuffer每次都会对StringBuffer对象本身进行操作,而不是生成新的对象并改变对象引用。
StirngBuilder 相比使用StringBuffer 仅能获得10%~15% 左右的性能提升,但却要冒多线程不安全的风险。
对于三者使用的总结:
- 如果要操作少量的数据用 = String
- 单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
- 多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
第二问:Java的堆、栈、方法区(也叫常量池)理解?
堆: 1.存放new出来的东西(对象、数组等) 2.可以被所有的线程共享,不会存放别的对象的引用.
栈: 1.存放基本变量(会包含这个基本类型的具体数值) 2.引用对象的变量(会存放这个引用在堆里面的具体地址)
方法区: 1.可以被所有的线程共享 2.包含了所有的class和static变量.
第三问:Java中的==和toString方法和equals方法的区别?
== : 用来判断两个变量是否相等,1.如果是基本类型,则只要值相等,判断的结果就是true. 2.如果是比较的引用类型,那么只有在两个变量指向的是同一对象时才是true
equals: 默认情况下内部就是==比较,所以如果不重写的话,比较结果和==比较一样,在String中已经重写了equals方法.
toString : 该方法属于Object,Object是所有类的顶级父类,都继承了toString方法,在实际使用的时候需要重写toString方法然后实现内容的直接输出.
第四问: ArrayList和LinkedList的区别?
- List是一个接口,他继承Collection接口,代表有序的队列。
- ArrayList、LinkedList是是List的实现类.
- ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构
- 对于随机访问的get和set,ArrayList要优于LinkedList,因为LinkedList基于指针的移动
- 对于添加和删除操作add和remove,一般LinkedList要比ArrayList快,因为ArrayList要移动数据。(其实真正大数据量化还是不太对的)
当添加数据量很小时,两者区别不太大,当添加的数据量大时,大约在容量的1/10之前,LinkedList会优于ArrayList,在其后就劣与ArrayList,且越靠近后面越差。所以个人觉得,一般首选用ArrayList,由于LinkedList可以实现栈、队列以及双端队列等数据结构,所以当特定需要时候,使用LinkedList,当然咯,数据量小的时候,两者差不多,视具体情况去选择使用;当数据量大的时候,如果只需要在靠前的部分插入或删除数据,那也可以选用LinkedList,反之选择ArrayList反而效率更高。
第五问: 简单介绍下你对Http协议与TCP协议简单理解?
1.Tcp协议对应着传输层,而HTTP协议对应着应用层;
2.从本质上而言,他们之间是没有区别的,因为http协议是建立在TCP协议之上的,比如,当我们发送一个http的请求,那么http就会通过tcp来建立一个连接到服务的一个通道,Http会立即将TCP断开,因此我们也说http是一种短连接或者无状态连接。
3.所谓的无状态,是指浏览器每次向服务器发起请求的时候,不是通过一个连接,而是每次都建立一个新的连接。如果是一个连接的话,服务器进程中就能保持这个连接并且在内存中记住一些信息状态,而每次请求结束后,连接就关闭,相关的内容就释放了,所以记不住状态,成为了无状态连接。
4.随着前端html页面功能的增强,如果我们每次访问一个页面都要建立一个TCP的连接,那效率就慢了,从HTTP/1.1开始,默认都开启了Keep-Alive,保持连接性,也就是说当一个网页打开完成后,http数据的tcp连接不会再关闭了,会有一个保持的时间,但是这个时间一到也会自动关闭。
5.之所以http是短连接,tcp是长连接。因为,http每次请求完后就会关闭,而通过socket编程使用TCP协议的时候,控制开关闭的代码在我们手上,我们只要不关闭就会让连接状态一直保持着。
第六问: java中为啥内部类可以访问外部类的成员?
1 编译器自动为内部类添加一个成员变量, 这个成员变量的类型和外部类的类型相同, 这个成员变量就是指向外部类对象的引用;
2 编译器自动为内部类的构造方法添加一个参数, 参数的类型是外部类的类型, 在构造方法内部使用这个参数为1中添加的成员变量赋值;
3 在调用内部类的构造函数初始化内部类对象时, 会默认传入外部类的引用.
未完待续....
JAVA初级工程师面试36问(一)相关推荐
- JAVA初级工程师面试36问(完结)
第三十一问: 说一下线程中sleep()和wait()区别? 1 . sleep()是让正在执行的线程主动让出CPU,当时间到了,在回到自己的线程让程序运行.但是它并没有释放同步资源锁只是让出. ...
- java初级工程师面试需要什么_初级Java工程师面试指导
一.概要 初级JavaWeb工程师的面试准备 Java基础知识面试指导 Java面向对象面试指导 JSP面试指导 MySQL数据库基础面试指导 Servlet面试指导 二.初级JavaWeb工程师的面 ...
- 面试总结----java初级工程师
最近在找java初级工程师的工作,投了很多简历都没有反馈,只收到了几个面试通知,可能是因为工作年限和项目经历都不是很丰富,另外一个原因可能是之前接触的技术不新,对于现在想进互联网公司来说,技术上不太符 ...
- 适合java初级工程师找工作的项目
哈喽,大家好.很多java初级工程师在找工作的时候,都不知道简历中的项目经验怎么写,今天就给大家分享一下,个人认为,对于初级工程师,没有工作经验的,如果说理论知识是非常好的,面试官问啥都能答出来,那项 ...
- 变态级JAVA程序员面试32问(附答案)(转载)
flyjimi的专栏 君士坦丁堡的血泪 CSDNBlog | 我的首页 | 联系作者 | 聚合 | 登录 66篇文章 :: 0篇收藏:: 9篇评论:: 0个Trackbac ...
- Java开发工程师面试总结
Java开发工程师面试总结 1. Java基础 1.1 接口与抽象类的区别 1.2 重写与重载的区别 1.3 集合 1.4 多线程 1.6 反射 2. Spring框架 2.1 IOC 2.2 AOP ...
- java中级工程师面试
java中级工程师面试 1.list如何转换为map. 1.创建一个POJO package test;public class User {private int id; private Strin ...
- linux bsp笔试题,Linux BSP工程师面试常问问题汇集.pdf
Linux BSP工程师面试常问问题汇集 Linux BSP 工程师面试常问问题汇集 TD 1.本文章遵从" 署名-非商业性使用 3.0 中国大陆 (CC BY-NC 3.0 CN)&quo ...
- 收藏|机械工程师面试常问问题
今天把我以前面试机械工程师时喜欢问的一些问题分享出来,机械工程师面试会问什么样的问题? 1.举例说明尺寸链的应用 尺寸链:在零件加工或机器装配过程中,由互相联系的尺寸按一定顺序首尾相接排列而成的封闭尺 ...
最新文章
- 20个正则表达式必知(前端开发)
- android开机启动shell脚本
- mysql的server_id怎么设置_MySQL Server-id踩到的坑
- QT 调用OCX控件
- Google检索技巧大全
- 基于docker搭建单机版ELK日志采集系统
- kickstart无人值守安装Ubuntu1804系统
- 东芝Toshiba DP-3003 一体机驱动
- 《计算机网络教程》(微课版 第五版)第四章 网络层与网络互连 课后习题及答案
- 国内部分视频剪辑软件使用总结
- 天使与海豚的爱情故事
- MIT 6.S081 聊聊xv6中的文件系统(上)
- 数字孪生城市概念分析及建设方案详解
- 保障企业总部与各分支机构之间数据传输的安全性------实验案例解析
- MPB:华南农大王文策组-​水禽粪便微生物移植技术(视频)
- 公司法律服务行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 安卓,调用系统方法分享到微信
- C#使用PrintDocument实现打印预览
- React 的受控组件和非受控组件有什么不同
- 聚类分析-K-means、层次聚类、DBSCAN、簇评估