飞越面试官(一)--Java基础
大家好!我是本公众号唯一官方指定没头屑的小便--怕屁林。
众所周知,现场面试(包括视频面试)多数时候是没有白板,也就是说,对于你的知识点、项目经验、过往经历和个人介绍等等,都是靠一张嘴。所以考虑到这个情况,根据上次迷你版Java面试汇总,结合自己的错误理解,怕屁林在此推出无公害不会零添加的纯文字免流程图版Java面试系列--《飞越面试官》,让大家知道这事根本不可能。其他语言可选择出门向右或留下旁听。
曾经有面试官问过我,什么是面向对象编程,我寻思我编程的时候我对象没坐我对面,怎么会这么问的?
我说面向对象吧,需要说下什么是对象,对象的话好比是一个人,你,我,它之类的,不同的人是不同的对象,对象有姓名年龄身高体重这些属性,还有吃饭睡觉打机等等的行为,那么这类人在面向对象编程中,统称为类,人等于类,什么样的人,就相对于有什么样的类,所以面向对象编程,说的也是这个对象有什么属性和行为,编程就是一系列对象的属性和行为之间的交互。同时,面向对象编程还包括抽象继承多态封装,这些就不一一展开讲了。
说下Java有哪些基本数据类型,这个就是十根手指头都能数得过,byte、short、int、long、float、double、有些用得少一下子说着会卡主、boolean、char。有些书上还void算是基本数据类型了,不过它什么都不代表。这些基本的数据类型对应有包装类,基本数据类型转包装类型就是装箱,包装类型转基本数据类型是拆箱。
有什么内部类啊?静态内部类、成员内部类、局部内部类、匿名内部类。
那你知道重写有什么特别的么?就是修饰符要大于父类,抛出异常小于等于父类,返回值范围也要小于等于分类,按我理解,就是业务修饰符可以扩大,但风险就是异常要降低,开源节流返回的范围值要更小。
说下Java的内存模型!我不知道什么是Java的内存模型,是JVM吗?不是!卒。
Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。Java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程的工作内存中保存了该线程中是用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量的传递均需要自己的工作内存和主存之间进行数据同步进行。而JMM就作用于工作内存和主存之间数据同步过程。他规定了如何做数据同步以及什么时候做数据同步。
String、StringBuffer和StringBuilder之间的区别?它们底层都是对char数组进行操作的。String是用final修饰的不可变字符串,所以每次加的时候都会生成新的String,JDK8之前String是放在方法区的变量池,JDK8及之后被放到了堆中的字符串常量池,所以不用new的话都会去常量池查找一下,存在的话就不生成新的了。StringBuffer和StringBuilder都是继承的AbstractStringBuilder,它们的内部方法可以对char数组组成的字符串可以进行各种操作,包括append等,不会像String那样生成新的对象,只有一个对象。其中StringBuffer的每一个方法都加了Synchroinzed修饰,所以他是线程安全的。在大量的字符串操作中,性能表现为StringBuilder,StringBuffer次之,String最后。
ArrayList和LinkedList的区别?ArrayList的底层是数组,初始化的时候会生成一个定长的数组,超过指定长度后会自动扩容,随机下标查询的时候最快,复杂度O1,但删除就要移动后面的数组向前,而LinkedList的底层是链表,随机下标查询肯定要慢些,因为要一个个移动,但是删除就很快,找到之后就直接通过指针移动,因为储存指针,也更占内存。
为什么用Map的情况下,在一百个数里查找的时间和在一百万个数据里查找的时间是一样的。应该只是想说Hash算法吧,就是利用hash函数来做,并且解决冲突。可以说说list和set的查找吗, 感觉这个问题好奇怪,更觉得没有可比性,不回答。
说说有哪些Queue,现在还记得有ArrayBlockingQueue, LinkedBlockingQueue,PriorityQueue这些还有的不容易记住。
创建线程的方式有哪些?三种,第一个是继承Thread,第二个是实现Runable,第三个是实现Callable,这个可以和Future配合返回线程结果。
try-catch有什么认识?用来捕抓异常的,当程序发生异常的时候可以被catch掉,然后在catch方法体里面可以做一些异常处理。同时还有一个finally,是在主体return之前执行的,一般用于关闭资源等操作。
用过哪些package?lang、util、io、net、sql。。。
多线程用过吧?那你说下synchronized的原理?synchronized底层原理是借助JVM来实现的,当一个对象被锁的时候,会调用底层方法进行monit enter,这个实现对象头会标上线程标识,还有第几次加锁,这样可以让锁变得可重入,当锁释放的时候,会调用monit exit,也是一个悲观锁。它修饰在普通方法那里就是对对象加锁,修饰在静态方法就是对类加锁。后面它的优化加了偏向锁,自旋锁/适应性自旋锁,轻量级锁,锁粗化,锁消除。
ThreadLocal使用过吗?使用过的,例如平时单机服务器上验证完登录用户后,把用户信息存放在ThreadLocal中,需要用的时候可以直接get出来。ThreadLocal的作用就是为当前运行线程准备一个专属数据,其他线程访问不到,只有自己可以,也不会存在什么并发问题,但是用完记得要remove掉,因为key为弱引用,value不是,可能value不被GC会造成内存泄露或堆栈溢出。内存泄露?像栈底元素一直被引用着但又一直不用,map中key被改了hashcode,value就找不回了等等。
读者可以会觉得还有很多Java的内容没说到,JVM/JUC这些会有另外章节,后续大概思路会和前面的迷你版第一版Java面试知识点汇总类似。本章节如有补充,狠求留言。
第一版Java面试知识点汇总下载:https://pan.baidu.com/s/1MxKXIZtoBd57pTwTIDyrgA 提取码: 3arb。
相关阅读:
飞越面试官(一)--Java基础的更多相关文章
- 飞越面试官(三)--JVM
大家好!我是本公众号唯一官方指定没头屑的小便--怕屁林. JVM,全称Java Virtual Machine,作为执行Java程序的容器,几乎代理了Java内存与服务器内存的交互,可以说是程序拥 ...
- 飞越面试官(二)--JUC
大家好!我是本号唯一官方指定没头屑的小便--怕屁林. JUC是什么东西?我相信很多经验尚浅的小伙伴部分都会为之一懵,我也是,三个字母都会读,连在一起就不知道在说什么,其实如果把它的全称写出来,“jav ...
- 【对线面试官】Kafka基础入门
<对线面试官>系列目前已经连载33篇啦,这是一个讲人话面试系列 [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 &am ...
- 面试官:Java中对象都存放在堆中吗?你知道逃逸分析?
面试官:Java虚拟机的内存分为哪几个区域? 我(微笑着):程序计数器.虚拟机栈.本地方法栈.堆.方法区 面试官:对象一般存放在哪个区域? 我:堆. 面试官:对象都存放在堆中吗? 我:是的. 面试官: ...
- 【对线面试官】Java多线程基础
// 请求直接交给线程池来处理 public void push(PushParam pushParam) { try { pushServiceThreadExecutor.submit(() -& ...
- JAVA面试精选【Java基础第一部分】
这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱.只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了.对于那些正打算找工作JAVA软件开发工作的童 ...
- 大厂面试官:Java工程师的“十项全能”
想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,在面试之前到底需要准备哪些东西呢?面试时面试官想了解你的什么专业技能,以下都是一个合格Java软件工程师所要具备的. 一.专业技能 熟练的 ...
- 面试又被 Java 基础难住了?推荐你看看这篇文章。
本文已经收录自 JavaGuide (59k+ Star):[Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. 1. 面向对象和面向过程的区别 面向过程 :面向过程性能比面 ...
- 面试官:Java序列化为什么要实现Serializable接口?我懵了
整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 更多优选 一口气说出 9种 分布式ID生成方式,面试官有点懵了 ...
随机推荐
- Java实现 蓝桥杯VIP 算法提高 前10名
算法提高 前10名 时间限制:1.0s 内存限制:256.0MB 问题描述 数据很多,但我们经常只取前几名,比如奥运只取前3名.现在我们有n个数据,请按从大到小的顺序,输出前10个名数据. 输入格式 ...
- Java实现 蓝桥杯 历届试题 危险系数
问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定义一个危险系数DF( ...
- Java实现第八届蓝桥杯购物单
购物单 题目描述 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打 ...
- 云服务器部署Web项目
接着上一篇整好MySQL数据库了,部署Web项目的重要一步就完成了,接下来就是整Tomcat发布项目了,这个博主用的是宝塔面板,所以,也很简单,直接在宝塔面板软件商店选择对应的Tomcat版本安装就行 ...
- python—列表,元组,字典
——列表:(中括号括起来:逗号分隔每个元素:列表中的元素可以是数字,字符串,列表,布尔值等等) (列表元素可以被修改) list(类) (有序的) [1]索引取值:切片取值:for循环:whi ...
- 简述hadoop安装步骤
简述hadoop安装步骤 安装步骤: 1.安装虚拟机系统,并进行准备工作(可安装- 一个然后克隆) 2.修改各个虚拟机的hostname和host 3.创建用户组和用户 4.配置虚拟机网络,使虚拟机系 ...
- Debian安装无线网卡Ralink RL5390驱动
惠普一体机用的无线网卡是Ralink的 RL5390,安装Debian10以后没有驱动,网上下载firmware-misc-nonfree_20190114-2_all.deb 和firmware-r ...
- @codefoces - 566E@ Restoring Map
目录 @description@ @solution@ @accepted code@ @details@ @description@ 对于一棵 n 个点的树,我们称两个点是相邻的当且仅当两个点的距离 ...
- @atcoder - AGC008E@ Next or Nextnext
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个长度为 N 的序列 a,问有多少排列 p,满足对于每一个 ...
- LeetCode 77,组合挑战,你能想出不用递归的解法吗?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode第46篇文章,我们一起来LeetCode中的77题,Combinations(组合). 这个题目可以说是很精辟了,仅仅 ...