当前位置:首页 > 生态圈 > 正文内容

2年java,华为面试,一面 挂

abcsky887个月前 (10-27)生态圈124

本篇文章给大家谈谈

一位深圳的球友,上周去华为的面经,准备不充分,最后就是面试没通过昨晚上,咱们通了电话,一起总结了这次面试失败的原因失败的原因有三点:1.自我介绍现场发挥(临时组织语言,时间太短)2.八股文背的太少3.慌乱不堪(主要是前面两个原因直接导致的)

2年java,华为面试,一面 挂

面试过程自我介绍这位球友在做自我介绍时,就是自己想到哪里说到哪里,没亮点,有点拼凑的意思,另外,自我介绍不到30秒就结束了面试官,当时懵逼的回了一句,结束了?言外之意就是,你的简历我都还没有看完,你的自我介绍

却已经over了建议:绝多数人适用的方式,先给自己写一个自我介绍,抽时间背下来,面试的时候带有节奏性的背就阔以了Java创建对象有几种“网站推广计划”方式?java中提供了以下四种创建对象的方式:new创建新对象通过反射机制

采用clone机制通过序列化机制这道题简单,球友回答满分深拷贝和浅拷贝有什么区别?浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象.。

深拷贝:被复制对象的所有变量都含有与原来的对象相同的值.而那些引用其他对象的变量将指向被复制过的新对象.而不再是原有的那些被引用的对象.换言之.深拷贝把要复制的对象所引用的对象都复制了一遍.球友这道题回答的还行,面试官点点头说,差不多吧。

五分钟 掌握 原型模式 (文末送书)BIO、“网站推广计划”NIO、AIO 有什么区别?BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。

AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制这道题回到的马马虎虎,AIO讲的不是很让面试官满意如何停止一个正在运行的线程?。

1、使用退出标志,使线程正常退出,也就是当run方法完成后线程终止2、使用stop方法强行终止,但是不推荐这个“网站推广计划”方法,因为stop和suspend及resume一样都是过期作废的方法3、使用interrupt方法中断线程。

球友翻车,突然忘了interrupt这个单词了,稀里糊涂了就结束了这道面试题,面试就切换到下一个面试题了synchronized 和 ReentrantLock 有什么不同?相似点这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的.。

区别这两种方式最大区别就是对于Synchronized来说,它是java语言的关键字,是原生语法“网站推广计划”层面的互斥,需要jvm实现而ReentrantLock它是JDK 1.5之后提供的API层面的互斥锁,需要lock()和unlock()方法配合try/finally语句块来完成。

synchronized经过编译,会在同步块的前后分别形成monitorenter和monitorexit这个两个字节码指令在执行monitorenter指令时,首先要尝试获取对象锁如果这个对象没被锁定,或者当前线程已经拥有了那个对象锁,把锁的计算器加1,相应的,在执行monitorexit指令时会将锁计算器就减1,当计算器为0时,锁就被释放了。

如果获取对象锁失败,那当前线程就要阻塞,直到对象锁被另一个线程释放为止由“网站推广计划”于ReentrantLock是java.util.concurrent包下提供的一套互斥锁,相比Synchronized,ReentrantLock

类提供了一些高级功能,主要有以下3项:等待可中断,持有锁的线程长期不释放的时候,正在等待的线程可以选择放弃等待,这相当于Synchronized来说可以避免出现死锁的情况公平锁,多个线程等待同一个锁时,必须按照申请锁的时间顺序获得锁,。

Synchronized锁非公平锁,ReentrantLock默认的构造函数是创建的非公平锁,可以通过参数true设为公平锁,但公平锁表现的性能不是很好锁绑定多个条件,一个ReentrantLock对象可以同时绑定对“网站推广计划”个对象。

这道题,回答了中规中矩,讲的都是一些比较浅,不够深入的比较于是面试官,开始放低面试难度说说进程和线程的区别?进程是一个“执行中的程序”,是系统进行资源分配和调度的一个独立单位线程是进程的一个实体,一个进程中拥有多个线程,线程之间共享地址空间和其它资源(所以通信和同步等操作线程比进程更加容易)。

线程上下文的切换比进程上下文切换要快很多(1)进程切换时,涉及到当前进程的CPU环境的保存和新被调度运行进程的CPU环境的设置(2)线程切换仅需要保存和设置少量的寄存器内容,不涉及存储管理方面的操作这道题,球友之前有专门的准备过,得到了面试官的认可。

线程池的原理是什么?大致原理如下图:

1,线程池内“网站推广计划”部会获取activeCount, 判断活跃线程的数量是否大于等于corePoolSize(核心线程数量),如果没有,会使用全局锁锁定线程池,创建工作线程,处理任务,然后释放全局锁;2,判断线程池内部的阻塞队列是否已经满了,如果没有,直接把任务放入阻塞队列;

3,判断线程池的活跃线程数量是否大于等于maxPoolSize,如果没有,会使用全局锁锁定线程池,创建工作线程,处理任务,然后释放全局锁;4,如果以上条件都满足,采用饱和处理策略处理任务注意:使用全局锁是一个严重的可伸缩瓶颈,在线程池预热之后(即内部线程数量大于等于corePoolSize),任务的处理是直接放入阻塞队列,这一步是不需要获得全“网站推广计划”局锁的,效率比较高。

这道题中第二步和第三步,球友给搞反了,面试官当时就打断了,是这样吗?脸一下就红了,不知道到底错哪里(这是我们一起聊得时候,他把第二步和第三步给搞错了,我猜当时面试官知道他错了,但没点穿)熟悉CAS原理?有什么缺点?。

CAS叫做CompareAndSwap,比较并交换,主要是通过处理器的指令来保证操作的原子性,它包含三个操作数:变量内存地址,V表示旧的预期值,A表示准备设置的新值,B表示当执行CAS指令时,只有当V等于A时,才会用B去更新V的值,否则就不会执行更新操作。

CAS有三个缺点ABA问题:ABA的问题指的是在CAS更新的过程中,当读取到的值是A,然后准备赋值的时候仍然“网站推广计划”是A,但是实际上有可能A的值被改成了B,然后又被改回了A,这个CAS更新的漏洞就叫做ABA只是ABA的问题大部分场景下都不影响并发的最终效果。

Java中有AtomicStampedReference来解决这个问题,他加入了预期标志和更新后标志两个字段,更新时不光检查值,还要检查当前的标志是否等于预期标志,全部相等的话才会更新循环时间长开销大:自旋CAS的方式如果长时间不成功,会给CPU带来很大的开销。

只能保证一个共享变量的原子操作:只对一个共享变量操作可以保证原子性,但是多个则不行,多个可以通过AtomicReference来处理或者使用锁synchronized实现这道题球友回答的还是很好的“网站推广计划”,面试官都连续说了几次“。

对、对、对”推荐:66道并发多线程面试题,你不来个666吗?你们项目中为什么使用Spring框架?这么问的话,就直接说Spring框架的好处就可以了比如说Spring有以下特点:轻量:Spring 是轻量的,基本的版本大约2MB。

控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开容器:Spring 包含并管理应用中对象的生命周期和配置。

MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品事务管理:“网站推广计划”Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。

但是球友没背过,所以也就是随便说说什么IOC、AOP就结束了谈谈你对Spring的AOP理解AOP(Aspect-Oriented Programming,面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可扩展性和可维护性。

Spr“网站推广计划”ing AOP是基于动态代理的,如果要代理的对象实现了某个接口,那么Spring AOP就会使用JDK动态代理去创建代理对象;而对于没有实现接口的对象,就无法使用JDK动态代理,转而使用CGlib动态代理生成一个被代理对象的子类来作为代理。

注意:图中的implements和extend即一个是接口,一个是实现类当然也可以使用AspectJ,Spring AOP中已经集成了AspectJ,AspectJ应该算得上是Java生态系统中最完整的AOP框架了。

使用AOP之后我们可以把一些通用功能抽象出来,在需要用到的地方直接使用即可,这样可以大大简化代码量我们需要增加新功能也方便,提高了系统的扩展性日“网站推广计划”志功能、事务管理和权限管理等场景都用到了AOP这个题也算是万年的沙雕面试题,球友也是吱吱呜呜的回答了(语言没组织好),面试官也没说什么"嗯,嗯"就结束了。

说一下JVM的内存模型JVM在执行Java程序时,会把它管理的内存划分为若干个的区域,每个区域都有自己的用途和创建销毁时间如下图所示,可以分为两大部分,线程私有区和共享区下图是根据自己理解画的一个JVM内存模型架构图:。

JVM内存分为线程私有区和线程共享区线程私有区1、程序计数器当同时进行的线程数超过CPU数或其内核数时,就要通过时间片轮询分派CPU的时间资源,不免发生线程切换这时,每个线程就需要一个属于自己的计数器来记录下一条要运行的指令。“网站推广计划”

如果执行的是JAVA方法,计数器记录正在执行的java字节码地址,如果执行的是native方法,则计数器为空2、虚拟机栈线程私有的,与线程在同一时间创建管理JAVA方法执行的内存模型每个方法执行时都会创建一个桢栈来存储方法的的变量表、操作数栈、动态链接方法、返回值、返回地址等信息。

栈的大小决定了方法调用的可达深度(递归多少层次,或嵌套调用多少层其他方法,-Xss参数可以设置虚拟机栈大小),栈的大小可以是固定也可以动态扩展如果请求的栈深度大于最大可用深度,则抛出stackOverflowError;

如果栈是可动态扩展的,但没有内存空间支持扩展,则抛出OutofMemoryError。使用jcla“网站推广计划”sslib工具可以查看class类文件的结构。下图为栈帧结构图:

一个线程对应一个虚拟机栈,一个虚拟机栈对应多个栈帧,每个栈帧的的入栈和出栈表示一个方法的调用3、本地方法栈与虚拟机栈作用相似但它不是为Java方法服务的,而是本地方法(C语言)由于规范对这块没有强制要求,不同虚拟机实现方法不同。

线程共享区1、方法区线程共享的,用于存放被虚拟机加载的类的元数据信息,如常量、静态变量和即时编译器编译后的代码若要分代,算是永久代(老年代),以前类大多“static”的,很少被卸载或收集,现回收废弃常量和无用的类。

其中运行时常量池存放编译生成的各种常量(如果hotspot虚拟机确定一个类的定义信息不会被使“网站推广计划”用,也会将其回收回收的基本条件至少有:所有该类的实例被回收,而且装载该类的ClassLoader被回收)2、堆

存放对象实例和数组,是垃圾回收的主要区域,分为新生代和老年代刚创建的对象在新生代的Eden区中,经过GC后进入新生代的S0区中,再经过GC进入新生代的S1区中,15次GC后仍存在就进入老年代这是按照一种回收机制进行划分的,不是固定的。

若堆的空间不够实例分配,则OutOfMemoryError(OOM)。

这道题,球友就是瞎扯了一通,扯到后面,面试官打断了话题(实在是听不下去了),JVM这一块就没问了推荐:2万字!JVM核心知识总结,赠送18连环炮一次完整的 HTTP 请求所经历的步骤?1“网站推广计划”、DNS解析(通过访问的域名找出其IP 地址,递归搜索)。

2、HTTP 请求,当输入一个请求时,建立一个 Socket 连接发起 TCP的 3 次握手如果是 HTTPS 请求,会略微有不同3.1、客户端向服务器发送请求命令(一般是 GET 或 POST 请求)。

这个是补充内容,面试一般不用回答客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。

客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定 IP 地址的 MAC 地址,然“网站推广计划”后发送 ARP 请求查找目的地址,如果得到回应后就可以使用 ARP 的请求应答交换的 IP 数据包现在就可以传输了,然后发送 IP 数据包到达服务器的地址。

3.2、客户端发送请求头信息和数据4.1、服务器发送应答头信息4.2、服务器向客户端发送数据5、服务器关闭 TCP 连接(4次挥手)这里是否关闭 TCP 连接,也根据 HTTP Keep-Alive 机制有关。

同时,客户端也可以主动发起关闭 TCP 连接6、客户端根据返回的HTML、CSS、JS进行渲染这是球友的最后一道题,面试官听他扯了一会,然后 “行吧,今天的面试就到这里,你先回去,后面有结果会通知你的”.

后记背面试题是不推荐的学习方法“网站推广计划”,但如果我们需要面试,那肯定逃不过背面试题不是说恐话,初级、中级、甚至高级都需要背面试题如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,咱们下期见!答案获取方式:已赞 已评 已关~。

学习更多知识与技巧,关注与私信博主(03)

原文出处:https://mp.weixin.qq.com/s/q0OTXShh0PlL2lIYM9X6xg

扫描二维码推送至手机访问。

版权声明:本文由海南拓宏网络科技工作室发布,如需转载请注明出处。

本文链接:http://4blc.com/post/505.html

分享给朋友:

“2年java,华为面试,一面 挂” 的相关文章

游戏测试员累不累(游戏测试员累不累呀)

今天给各位分享 原标题:游戏测试员需要学习哪些技术?一款游戏,不是开发出来就能上线,还需要经过游戏测试员的测试,看看BUG与各种设计不合理很多人不知道游戏设计师,所以今天小编带大家了解一下游戏测试员需要学习的技术 游戏测试员需要学哪些技术?在游戏开发阶段进行测试:必须要有一...

为什么java面试净问些没用的东西(java面试为什么要离职)

本篇文章给大家谈谈 作为一名优秀的程序员,技术面试都是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识如果你参加过一些大厂面试,肯定会遇到一些这样的问题:1、看你项目都用的框架,熟悉Spring、mybatis等框架实现原理吗?。 2...

2021年面试问题(2020面试问题)

本篇文章给大家谈谈 Java 面试Java 作为编程语言中的 NO.1,选择入行做 IT 做编程开发的人,基本都把它作为首选语言,进大厂拿高薪也是大多数小伙伴们的梦想以前 Java 岗位人才的空缺,而需求量又大,所以这种人才供不应求的现状,就是 Java 工程师的薪资待遇相对优厚的...

java面向对象基础知识(java面向对象的三大特征及实现方法)

本文分享给大家的是: 讲到面向对象编程思想不得不先了解面对过程,以及两种编程思想的区别面向过程(Procedure Oriented Programming)面向过程是以事件为中心的编程思想,就是分析出解决问题所需的步骤,然后一步一步去实现解决,面向过程是是模块化的思想方法。...

java面向对象基础知识(java语言面向对象是什么意思呀怎么写)

今天给各位分享 Java是面向对象的语言,而面向对象编程主要体现了继承、封装、多态三个特性,那么什么是对象?“一切皆对象”那么有没有更加通俗的解释是怎样的呢? 比如有个女朋友,那么她肯定是对象她的身高三围等等是参数属性,那些可以告诉别人的就叫公有属性,私密的就是私有属性;她...

产业经济和金融(产业经济学论文范文)

今天给各位分享 然而,鲜有文献深入分析过去中国数字金融发展壮大的驱动因素作为传统信贷和资本市场之外新兴的金融供给形式,数字金融的兴起与传统的金融供给有着密不可分的关系文章采用2011-2018年的地市级面板数据,基于北京大学数字金融研究中心所构建的数字普惠金融指数分析中国数字金融...