前几天,一个老家的小伙子正在找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的区别?

  1. List是一个接口,他继承Collection接口,代表有序的队列。
  2. ArrayList、LinkedList是是List的实现类.
  3. ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构
  4. 对于随机访问的get和set,ArrayList要优于LinkedList,因为LinkedList基于指针的移动
  5. 对于添加和删除操作add和remove,一般LinkedList要比ArrayList快,因为ArrayList要移动数据。(其实真正大数据量化还是不太对的)
  6. 当添加数据量很小时,两者区别不太大,当添加的数据量大时,大约在容量的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问(一)相关推荐

  1. JAVA初级工程师面试36问(完结)

    第三十一问:   说一下线程中sleep()和wait()区别? 1 . sleep()是让正在执行的线程主动让出CPU,当时间到了,在回到自己的线程让程序运行.但是它并没有释放同步资源锁只是让出. ...

  2. java初级工程师面试需要什么_初级Java工程师面试指导

    一.概要 初级JavaWeb工程师的面试准备 Java基础知识面试指导 Java面向对象面试指导 JSP面试指导 MySQL数据库基础面试指导 Servlet面试指导 二.初级JavaWeb工程师的面 ...

  3. 面试总结----java初级工程师

    最近在找java初级工程师的工作,投了很多简历都没有反馈,只收到了几个面试通知,可能是因为工作年限和项目经历都不是很丰富,另外一个原因可能是之前接触的技术不新,对于现在想进互联网公司来说,技术上不太符 ...

  4. 适合java初级工程师找工作的项目

    哈喽,大家好.很多java初级工程师在找工作的时候,都不知道简历中的项目经验怎么写,今天就给大家分享一下,个人认为,对于初级工程师,没有工作经验的,如果说理论知识是非常好的,面试官问啥都能答出来,那项 ...

  5. 变态级JAVA程序员面试32问(附答案)(转载)

    flyjimi的专栏 君士坦丁堡的血泪 CSDNBlog  |  我的首页  |  联系作者  |  聚合   |  登录      66篇文章 :: 0篇收藏:: 9篇评论:: 0个Trackbac ...

  6. Java开发工程师面试总结

    Java开发工程师面试总结 1. Java基础 1.1 接口与抽象类的区别 1.2 重写与重载的区别 1.3 集合 1.4 多线程 1.6 反射 2. Spring框架 2.1 IOC 2.2 AOP ...

  7. java中级工程师面试

    java中级工程师面试 1.list如何转换为map. 1.创建一个POJO package test;public class User {private int id; private Strin ...

  8. linux bsp笔试题,Linux BSP工程师面试常问问题汇集.pdf

    Linux BSP工程师面试常问问题汇集 Linux BSP 工程师面试常问问题汇集 TD 1.本文章遵从" 署名-非商业性使用 3.0 中国大陆 (CC BY-NC 3.0 CN)&quo ...

  9. 收藏|机械工程师面试常问问题

    今天把我以前面试机械工程师时喜欢问的一些问题分享出来,机械工程师面试会问什么样的问题? 1.举例说明尺寸链的应用 尺寸链:在零件加工或机器装配过程中,由互相联系的尺寸按一定顺序首尾相接排列而成的封闭尺 ...

最新文章

  1. 20个正则表达式必知(前端开发)
  2. android开机启动shell脚本
  3. mysql的server_id怎么设置_MySQL Server-id踩到的坑
  4. QT 调用OCX控件
  5. Google检索技巧大全
  6. 基于docker搭建单机版ELK日志采集系统
  7. kickstart无人值守安装Ubuntu1804系统
  8. 东芝Toshiba DP-3003 一体机驱动
  9. 《计算机网络教程》(微课版 第五版)第四章 网络层与网络互连 课后习题及答案
  10. 国内部分视频剪辑软件使用总结
  11. 天使与海豚的爱情故事
  12. MIT 6.S081 聊聊xv6中的文件系统(上)
  13. 数字孪生城市概念分析及建设方案详解
  14. 保障企业总部与各分支机构之间数据传输的安全性------实验案例解析
  15. MPB:华南农大王文策组-​水禽粪便微生物移植技术(视频)
  16. 公司法律服务行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  17. 安卓,调用系统方法分享到微信
  18. C#使用PrintDocument实现打印预览
  19. React 的受控组件和非受控组件有什么不同
  20. 聚类分析-K-means、层次聚类、DBSCAN、簇评估

热门文章

  1. oracle数据库之统计分析(方差、标准差、协方差)
  2. diskman 恢复分区表找到数据
  3. spotify电脑下载歌曲_26步,把Spotify音乐集成进SAP
  4. 【AI测试】也许这有你想知道的人工智能 (AI) 测试--开篇
  5. c语言中字符串的子式咋样输出,C语言常用代码
  6. 微信发送过来的位置怎样用高德地图收藏这个点加入收藏夹
  7. 是不是太胖了(C语言)
  8. maple 解代数方程组得多项式_Maple与数学实验
  9. 【运筹学】(2)—预测
  10. WPM2015 P沟道增强型MOS场效应晶体管WILLSEM