城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

互联网大厂java面试题阿里

3月11日 倾城傷投稿
  1、TCP和UDP区别?
  TCP基于连接,UDP基于无连接。
  TCP要求系统资源较多,UDP较少。
  UDP程序结构较简单。
  TCP保证数据正确性,UDP可能丢包。
  TCP保证数据顺序,UDP不保证。2、TCPIP协议涉及哪几层架构?
  应用层传输层互连网络层网络接口层。3、描述下TCP连接4次挥手的过程?为什么要4次挥手?
  因为TCP是全双工,每个方向都必须进行单独关闭。关闭连接时,当Server端收到FIN
  报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client
  端,你发的FIN报文我收到了。只有等到Server端所有的报文都发送完了,我才能发
  送FIN报文,因此不能一起发送。故需要四步握手。4、计算机插上电源操作系统做了什么?
  加电打开电源开关,给主板和内部风扇供电。
  启动引导程序CPU开始执行存储在ROMBIOS中的指令。
  开机自检计算机对系统的主要部件进行诊断测试。
  加载操作系统计算机将操作系统文件从磁盘读到内存中。
  检查配置文件,定制操作系统的运行环境读取配置文件,根据用户的设置对操作
  系统进行定制。
  准备读取命令和数据计算机等待用户输入命令和数据。5、Linux操作系统设备文件有哪些?
  字符设备、块设备。6、多线程同步有哪些方法?
  使用synchronized关键字
  wait和notify
  使用特殊域变量volatile实现线程同步
  使用重入锁实现线程同步
  使用局部变量来实现线程同步
  使用阻塞队列实现线程同步
  使用原子变量实现线程同步7、一个对象的两个方法加synchronized,一个线程进去sleep,另一个线程可以进入到另一个方法吗?
  不能。8、什么是可重入锁(ReentrantLock)?
  举例来说明锁的可重入性publicclassUnReentrant{LocklocknewLock();publicvoidouter(){lock。lock();inner();lock。unlock();}publicvoidinner(){lock。lock();dosomethinglock。unlock();}}
  outer中调用了inner,outer先锁住了lock,这样inner就不能再获取lock。其实调用
  outer的线程已经获取了lock锁,但是不能在inner中重复利用已经获取的锁资源,这种
  锁即称之为不可重入可重入就意味着:线程可以进入任何一个它已经拥有的锁所同步着的代码块。
  synchronized、ReentrantLock都是可重入的锁,可重入锁相对来说简化了并发编程的开发。9、创建线程的三个方法是什么?
  通过继承Thread类创建线程类。
  实现Runnable接口创建线程类。
  通过Callable和Future接口创建线程。10、Java怎么获取多线程的返回值?
  主线程等待。
  使用Thread的join阻塞当前线程等待。
  实现Callable接口(通过FutureTask或线程池的Future)。11、线程池有哪几种创建方式?
  Java通过Executors(jdk1。5并发包)提供四种线程池,分别为:
  newCachedThreadPoo创建一个可缓存线程池,如果线程池长度超过处理需要,可灵
  活回收空闲线程,若无可回收,则新建线程。
  newFixedThreadPoo创建一个定长线程池,可控制线程最大并发数,超出的线程会在队
  列中等待。
  newScheduledThreadPoo创建一个定长线程池,支持定时及周期性任务执行。
  newSingleThreadExecutor创建一个单线程化的线程池,它只会用唯一的工作线程来执
  行任务,保证所有任务按照指定顺序(FIFO,LIFO,优先级)执行。12、线程池参数有哪些?
  corePoolSize核心线程大小。
  maximumPoolSize线程池最大线程数量。
  keepAliveTime空闲线程存活时间。
  unit空间线程存活时间单位。
  workQueue工作队列。
  threadFactory线程工厂。
  handler拒绝策略。13、线程池拒绝策略有哪些?
  ThreadPoolExecutor。AbortPolicy:丢弃任务并抛出RejectedExecutionException异常
  (默认拒绝策略)。
  ThreadPoolExecutor。DiscardPolicy:丢弃任务,但是不抛出异常。
  ThreadPoolExecutor。DiscardOldestPolicy:丢弃队列最前面的任务,然后重新提交被
  拒绝的任务。
  ThreadPoolExecutor。CallerRunsPolicy:由调用线程(提交任务的线程)处理该任务。14、你认为对线程池的核心参数实现自定义可配置,三个核心参数是?
  corePoolSize:核心线程数线程数定义了最小可以同时运行的线程数量。
  maximumPoolSize:当队列中存放的任务达到队列容量的时候,当前可以同时运行的线
  程数量变为最大线程数。
  workQueue:当新任务来的时候会先判断当前运行的线程数量是否达到核心线程数,如果
  达到的话,信任就会被存放在队列中。15、ThreadPoolExecutor线程池,corePoolSize5,maximumPoolSize10,queueCapacity10,有20个耗时任务交给这个线程池执行,线程池会如何执行这20个任务?
  如果当前线程数corePoolSize,如果是则创建新的线程执行该任务。
  如果当前线程数corePoolSize,则将任务存入BlockingQueue。
  如果阻塞队列已满,且当前线程数maximumPoolSize,则新建线程执行该任务。
  如果阻塞队列已满,且当前线程数maximumPoolSize,则抛出异常RejectedExecutionException,告诉调用者无法再接受任务了。16、给用户发消息任务超出队列,你用哪个拒绝策略?有其他方法吗?
  ThreadPoolExecutor。CallerRunsPolicy
  无界队列(LinkedBlockingQuene),继续添加任务到阻塞队列中等待执行。
  用消息队列存任务数据,线程池慢慢处理。17、Java8新特性有哪些了解?
  接口的默认方法
  Lambda表达式
  函数式接口
  方法和构造函数引用
  Lamda表达式作用域
  内置函数式接口
  Optional
  Streams(流)
  ParalleStreams(并行流)
  Maps
  DateAPI(日期相关API)
  Annotations(注解)18、什么时候用多线程、为什么要设计多线程?高并发
  系统接受实现多用户多请求的高并发时,通过多线程来实现。
  线程后台处理大任务
  一个程序是线性执行的。如果程序执行到要花大量时间处理的任务时,那主程序就得等待其执
  行完才能继续执行下面的。那用户就不得不等待它执行完。
  这时候可以开线程把花大量时间处理的任务放在线程处理,这样线程在后台处理时,主程序也
  可以继续执行下去,用户就不需要等待。线程执行完后执行回调函数。大任务
  大任务处理起来比较耗时,这时候可以起到多个线程并行加快处理(例如:分片上传)。
  好处:可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运
  行其他的线程而不是等待,这样就大大提高了程序的效率。也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。19、多线程越多效率越高吗?
  不是
  当线程总数较少时,线程越多,效率越高。
  当线程总数较多时,由于线程本身调用耗时,线程越多,效率越低。
  线程数越多会造成线程的生命周期开销非常高消耗过多的CPU资源。20、多线程会产生哪些并发问题?
  安全性问题:在单线程系统上正常运行的代码,在多线程环境中可能会出现意料之外的结果。
  活跃性问题:不正确的加锁、解锁方式可能会导致死锁or活锁问题。
  性能问题:多线程并发即多个线程切换运行,线程切换会有一定的消耗并且不正确的加锁。21、Mybatis如何将对象转换成SQL?
  SQL绑定是在加载Mybatis配置文件,然后扫描到哪个mapper子节点,再加载
  mapper映射文件,扫描里面的SQL节点,然后封装成对象(MappedStatement,在这个
  对象的SqlSource封装着sql语句)。所有的配置信息保存在Configuration类,最后动
  态代理执行的时候,取出来封装sql的对象,执行sql。22、虚拟内存是什么,虚拟内存的原理是什么?
  虚拟内存是计算机系统内存管理的一种技术。
  虚拟内存有以下两个优点:
  虚拟内存地址空间是连续的,没有碎片。
  虚拟内存的最大空间就是cup的最大寻址空间,不受内存大小的限制,能提供比内存更
  大的地址空间。
  当每个进程创建的时候,内核会为每个进程分配虚拟内存,这个时候数据和代码还在磁盘上,当运行到对应的程序时,进程去寻找页表,如果发现页表中地址没有存放在物理内存上,而是在磁盘上,于是发生缺页异常,于是将磁盘上的数据拷贝到物理内存中并更新页表,下次再访问该虚拟地址时就能命中了。23、栈会溢出吗?什么时候溢出?方法区会溢出吗?
  栈是线程私有的,它的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口等信息。局部变量表又包含基本数据类型,对象引用类型。如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出
  StackOverflowError异常,方法递归调用产生这种结果。如果Java虚拟机栈可以动态扩展,并且扩展的动作已经尝试过,但是无法申请到足够的内存去完成扩展,或者在新建立线程的时候没有足够的内存去创建对应的虚拟机栈,那么Java虚拟机将抛出一个OutOfMemory异常。(线程启动过多)。方法区会发生溢出。
  HotSpotjdk1。7之前字符串常量池是方法区的一部分,方法区叫做永久代,在1。7之
  前无限的创建对象就会造成内存溢出,提示信息:PermGenspace而是用jdk1。7之后,
  开始逐步去永久代,就不会产生内存溢出。
  方法区用于存放Class的相关信息,如类名、访问修饰符、常量池、字段描述、方法描述等,如果动态生成大量的Class文件,也会产生内存溢出。常见的场景还有:大量JSP或动态产生JSP文件的应用(JSP第一次运行时需要编译为java类)、基于OSGi的应用(即
  使是同一个类文件,被不同的类加载器加载也会视为不同的类)。
  24、JVM如何加载类的?
  JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化。
  加载
  加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类java。lang。Class
  对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class文件获取,这里既可以从ZIP包中读取(比如从jar包和war包中读取),也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将JSP文件转换成对应的Class类)。
  验证
  这一阶段的主要目的是为了确保Class文件的字节流中包含的信息是否符合当前虚拟机的要
  求,并且不会危害虚拟机自身的安全。
  准备
  准备阶段是正式为类变量分配内存并设置类变量的初始值阶段,即在方法区中分配这些变量所使用的内存空间。注意这里所说的初始值概念,比如一个类变量定义为:
  实际上变量v在准备阶段过后的初始值为0而不是8080,将v赋值为8080的putstatic
  指令是程序被编译后,存放于类构造器方法之中。
  但是注意如果声明为:publicstaticfinaintv8080;
  在编译阶段会为v生成ConstantValue属性,在准备阶段虚拟机会根据ConstantValue属
  性将v赋值为8080。
  解析
  解析阶段是指虚拟机将常量池中的符号引用替换为直接引用的过程。符号引用就是class文件中的publicstaticintv8080;
  实际上变量v在准备阶段过后的初始值为0而不是8080,将v赋值为8080的putstatic
  指令是程序被编译后,存放于类构造器方法之中。但是注意如果声明为:
  在编译阶段会为v生成ConstantValue属性,在准备阶段虚拟机会根据ConstantValue属
  性将v赋值为8080。
  初始化
  初始化阶段是类加载最后一个阶段,前面的类加载阶段之后,除了在加载阶段可以自定义类加载器以外,其它操作都由JVM主导。到了初始阶段,才开始真正执行类中定义的Java程序代码。25、自己写过String类能加载吗,之前的String是什么时候加载进去的?
  不能加载,因为双亲委派机制,JVM出于安全性的考虑,全限定类名相同的String是不能被加载的。
  java。lang。String会被顶级类加载器BootstrapClassloader加载。当class文件被加载到内存中时,类文件常量池中的其他常量会加载到运行时常量池,但是字符串常量不会。它会首先在堆区中创建一个字符串对象,然后再把这个对象的引用保存到全局字符串常量池中。26、描述ThreadLocal(线程本地变量)的底层实现原理及常用场景?
  实现原理:
  每个Thread线程内部都有一个ThreadLocalM以线程作为key,泛型作为value,
  可以理解为线程级别的缓存。每一个线程都会获得一个单独的map。
  提供了set和get等访问方法,这些方法为每个使用该变量的线程都存有一份独立的副本,因此get方法总是返回由当前执行线程在调用set时设置的最新值。
  应用场景:
  JDBC连接
  Session管理
  Spring事务管理
  调用链,参数传递
  AOP
  ThreadLoca是一个解决线程并发问题的一个类,用于创建线程的本地变量,我们知道一个
  对象的所有线程会共享它的全局变量,所以这些变量不是线程安全的,我们可以使用同步技术。但是当我们不想使用同步的时候,我们可以选择ThreadLocal变量。例如,由于JDBC的连接对象不是线程安全的,因此,当多线程应用程序在没有协同的情况下,使用全局变量时,就不是线程安全的。通过将JDBC的连接对象保存到ThreadLocal中,每个线程都会拥有属于自己的连接对象副本。27、什么是微服务架构?
  微服务架构就是将单体的应用程序分成多个应用程序,这多个应用程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。28、微服务有哪些特点?
  解耦系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建,更改和
  扩展
  组件化微服务被视为可以轻松更换和升级的独立组件
  业务能力微服务非常简单,专注于单一功能
  自治开发人员和团队可以彼此独立工作,从而提高速度
  持续交付通过软件创建,测试和批准的系统自动化,允许频繁发布软件
  责任微服务不关注应用程序作为项目。相反,他们将应用程序视为他们负责的产品
  分散治理重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技
  术模式。开发人员可以自由选择最有用的工具来解决他们的问题
  敏捷微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃29、Lambda表达式是啥?优缺点?
  lambda表达式,也被称为闭包,它是推动Java8发布的最重要新特性。lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中),使用Lambda表达式可以使代码变的更加简洁紧凑。
  优点:
  代码更加简洁
  减少匿名内部类的创建,节省资源
  使用时不用去记忆所使用的接口和抽象函数
  缺点:
  不易于后期维护,必须熟悉lambda表达式和抽象函数中参数的类型。
  可读性差:
  若不用并行计算,很多时候计算速度没有比传统的for循环快。(并行计算有时需要预热才显示出效率优势)不容易调试。
  若其他程序员没有学过lambda表达式,代码不容易让其他语言的程序员看懂。30、讲一下Lambda的表达式作用域(LambdaScopes)。
  访问局部变量
  我们可以直接在lambda表达式中访问外部的局部变量:但是和匿名对象不同的是,这里的变量可以不用声明为final,该代码同样正确,不过这里的变量必须不可被后面的代码修改(即隐性的具有fina的语义)
  访问字段和静态变量
  与局部变量相比,我们对lambda表达式中的实例字段和静态变量都有读写访问权限。
  该行为和匿名对象是一致的。
  访问默认接口方法
  无法从lambda表达式中访问默认方法。31、MySQ事务的特性有什么,说一下分别是什么意思?
  原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。
  一致性或可串性:事务的执行使得数据库从一种正确状态转换成另一种正确状态。
  隔离性:在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务。
  持久性:事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故
  障,事务的处理结果也会得到保存。
投诉 评论 转载

每日外刊探索未知的地外生命背景知识科学界对于外星生命的好奇和想象一直都没有停止过,也没有停止过对外星生命的探索,很长时间以来,火星都是地外生命探索的首选目标,原因很简单,它和地球太像了。首先它和地……五矿二十三冶创新激发新动能井盖安装四点定位装置。红网时刻新闻1月12日讯(通讯员刘文)日前,针对传统井盖安装效率低、井周压实度和平整度不足等问题,五矿二十三冶总承包公司自主研发的井盖安装四点定位装……仅靠直播健身出圈,刘畊宏粉丝暴涨超6000万,名字却被抢注商腰间的赘肉咔咔掉,人鱼线马甲线我想要!有节奏的健身动作,配合周杰伦的经典歌曲《本草纲目》,刘畊宏和妻子的一套燃脂毽子操风靡大江南北,吸引了一大群刘畊宏女孩刘畊宏男孩跟练跳……前脚骂完嘎子卖假货,后脚自己就去卖假酒,潘长江到底咋想的?最近几年,在众多娱乐圈已经退休的老艺人里,应该没有比潘长江热度更高的存在了,以一人之力比肩顶流明星,潘老师也算是创造了一段传奇,只不过这个传奇里大部分的消息都是负面的,自从20……蒋介石败退台湾时,不忘带走三位军官太太,她们最后的结局如何?1949年蒋介石宣布引退,率领国民党残部败退台湾,而在临别之际,蒋介石除了带走了大量的黄金储备外,还特意在撤退名单上,写下了三位军官太太的名字,并与手下叮嘱道,这三个人一……iOS版微信2023年首次更新新增室内地图自定义时间清聊天记Tech星球1月12日消息,iOS微信迎来版本更新,版本号为8。0。32,主要是修复了一些已知问题,以及新增和优化了一些功能。据悉,这是2023年iOS微信的首个版本更新……Knight加盟BLG已成定局!LPL多方线索显示BLG将组各位LPL的观众和英雄联盟召唤师大家好,这里是天下游戏汇。昨天经历了Faker的离队风波之后,LCK现在展开了对Nuguri最后的争夺,本以为Nuguri已经签约DK了,……明星素颜证件照鹿晗,赵丽颖,胡歌,看看你的男神女神真面目平时大家看到的都是台前光鲜亮丽的明星,妆容整齐,完美无瑕,最好的以面展现给自己的粉丝观众。今天走一条不寻常的路,看一下褪去明星的光环,卸掉妆容,你们心中的男神女神是什么样子的。……香港回归前夕,中英在南海对峙72小时,我军舰长撞就撞,谁怕谁1997年6月30日午夜,香港会议展览中心灯火通明,所有人都在等待那一庄严肃穆的时刻。23时59分,英国国旗和香港旗缓缓降落,0点整,中华人民共和国国旗在雄壮的国歌声中徐……GTA三部曲开发偷工减料!入水特效未做还不如原版在《侠盗猎车手三部曲终极版》发售后,虽然改用虚幻4引擎重制后,但游戏并没有达到系列粉丝的预期,甚至还很烂。近日,国外玩家发现《GTA:三部曲》中的《罪恶都市》还在重制开发上偷工……互联网大厂java面试题阿里1、TCP和UDP区别?TCP基于连接,UDP基于无连接。TCP要求系统资源较多,UDP较少。UDP程序结构较简单。TCP保证数据正确性,UDP可能丢包……希罗27分热火结束3连败,爵士惊天反扑未果热火延续客场之旅对阵爵士,吉米巴特勒缺阵。热火在第四节还剩6分钟取得24分领先,尽管爵士之后轰出244反扑高潮,可惜为时已晚,最终热火111105力克爵士结束三连败戈贝尔……
我的驴行日记天垌,汪家大院首破6GHz!Intel酷睿i913900KS图赏阿木尔林业局最低气温52。3最低温度记录抄书赚钱,打卡第十天你要好好爱自己作者序!!身体毒素谁来扫?四大排毒器官照顾好(下)穿越数字之门,探索元宇宙的奇妙世界3月21日上午7点45newbing使用汇总(请关注,不定期库里38812汤普森287勇士擒雷霆获3连胜!我修行走火入魔极度抑郁,一老和尚教我如何去掉执着,保持中道重回隆冬汽车搞营销,出圈全靠蹭曼联45亿镑不卖国米12亿没人买网友北上广和小县城的差别坚持初心根据相关规定物的担保是什么意思?如何用制作简报现代家庭孩子晚睡因作息所造成你可能都不知道中行的活期宝可中国银行不承认怎么办最动听的旋律送妈妈一束花作文运动内衣哪个品牌的好运动内衣工字的好还是交叉式的好第一次滑雪作文600字癸卯元夕曹能始席上咏夹纱灯屏八戒抢绣球老之将至的成语故事

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找