title: 2021年3月29号 阿里菜鸟实习面试(一面)
tags: 面经


2021年3月29日 阿里菜鸟实习面试(一面)

自我介绍
你为什么想做Java开发工程师
你还做了除了飞机大战,还做了什么Java的项目吗?
你讲讲你付出精力最多的项目,讲讲你做了什么工作以及达到什么效果呢?
讲讲你的飞机大战的多线程编程是如何编写的
你是如何实现多线程的呢?还有没其他的方式去实现线程安全呢?
介绍一下synchronized关键字以及底层实现原理
synchronized修饰这个类的时候,会对类中的实例对象加锁吗?
wait和sleep的区别
常见的集合类的你有看过吗?(list,set,map)
你能把这三者的整体框架说一下吗?就是这三者都有哪些实现子类啥的(见下文)
map的数据结构说一下(其实只要说一说hashmap即可)
看过hashmap的实现源码?它对null值支持吗?它是如何实现对null支持的呢?(见下文)
讲一下Java虚拟机的结构(方法区,堆区,虚拟机栈,本地方法栈,程序计数器)
定义 String s = new String(“abc”); 那它在虚拟机中整个的内存分配的过程是怎么样的?(见下文)
你用Java哪个版本呢?你了解lambda 表达式吗?(见下文)
项目的源码你有看过吗?比如说你看到过spring源码吗?
你平常会看哪些开源项目的源码呢?
你有没有做过一个这样一个Java项目呢?
你平常有去关注现在主流的一些框架吗?
反问环节

1.1你能把这三者的整体框架说一下吗?就是这三者都有哪些实现子类啥的

1.2 看过hashmap的实现源码?它对null值支持吗?它是如何实现对null实现的呢?(见下文)

肯定是支持null值。

实现过程:

HashMap在put的时候会调用hash()方法来计算key的hashcode值,可以从hash算法当中,当key==null时的返回值为0;因此key为null时,hash算法返回值为0,不会调用key的hashcode方法

这里可以补充一个知识点:***hashtable,对于null值会抛出异常,而对于null键,则会调用null.hashCode(),而导致空指针异常*,**concurrenthashmap则对于null键值对,直接抛出空异常****。

ConcurrentHashMap不能put null 是因为 无法分辨是key没找到的null,还是有key值为null,这在多线程里面是模糊不清的,所以压根就不让put null。

1.3 定义 String s = new String(“abc”); 那它在虚拟机中整个的内存分配的过程是怎么样的?(见下文)

参考博客:通过Java虚拟机理解String s=new String(“abc”);创建几个对象

当我们写上 String s = new String(“abc”); 时,这里会创建两个对象,一个存放在堆中的 new String(“abc”);**一个是存放在运行时常量池的中的“abc” **。之所以会有存放在常量池总的abc是因为字符串类型的元素会经常创建,如果又新创建一个对象,如String s2=“abc”,这里会直接指向常量池中的”abc“字符串,避免重复创建,提高效率。

1.4 你用Java哪个版本呢?你了解lambda 表达式吗?(见下文)

Lambda表达式:

Lambda 表达式在 Java 语言中引入了一个新的语法元素和操作符。这个操作符为 “->”,该操作符被称 为 Lambda 操作符或箭头操作符。它将 Lambda 分为两个部分:

  • 左侧:指定了 Lambda 表达式需要的所有参数
  • 右侧:指定了 Lambda 体,即 Lambda 表达式要执行的功能。

Lambda 表达式,也可称为闭包,它是推动Java 8 发布的最重要新特性。

Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

使用 Lambda 表达式可以使代码变的更加简洁紧凑

使用 Lambda 表达式需要注意以下两点

  • Lambda 表达式主要用来定义行内执行的方法类型接口,例如,一个简单方法接口。
  • Lambda 表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力。

使用Lambda表达式的要求:

也许你已经想到了,能够使用Lambda的依据是必须有相应的 函数接口

函数接口,是指内部只有一个抽象方法的接口。这一点跟Java是强类型语言吻合,也就是说你并不能在代码的任何地方任性的写Lambda表达式。实际上Lambda的类型就是对应函数接口的类型。Lambda表达式另一个依据是类型推断机制,在上下文信息足够的情况下,编译器可以推断出参数表的类型,而不需要显式指名。

参考博客:面试官 | 什么是 Lambda?该如何使用?

在Java 8里面,所有的Lambda的类型都是一个接口,而Lambda表达式本身,也就是”那段代码“,需要是这个接口的实现。这是我认为理解Lambda的一个关键所在,简而言之就是,Lambda表达式本身就是一个接口的实现

2021年3月29日 阿里菜鸟实习面试(一面)(含部分总结)相关推荐

  1. 2021年3月19日 百度开发实习面试(质量效能研发部)(一面)

    title: 2021年3月19日 百度开发实习面试(质量效能研发部)(一面) tags: 面经 2021年3月19日 百度开发实习面试(质量效能研发部)(一面) 自我介绍介绍项目你介绍一下hashm ...

  2. 5月29日阿里云开发者大会了解一下?

    简介:阿里云开发者大会5月29日要在北京开幕啦! 来源 | 阿里云开发者社区 开发者小哥哥小姐姐们, 阿里云开发者大会5月29日要在北京开幕啦! 我们邀请了互联网大咖.技术大佬们和大家一起聊聊技术,聊 ...

  3. 2021年4月22日 阿里供应链Java开发实习面试(三面)(含总结)

    title: 2021年4月22日 阿里供应链Java开发实习面试(三面) tags: 面经 2021年4月22日 阿里供应链Java开发实习面试(三面) 上来就手撕一道代码--输入一个数,然后顺时针 ...

  4. 2021年4月16日 阿里供应链Java研发实习面试(二面)

    title: 2021年4月16日 阿里供应链Java研发实习面试(二面) tags: 面经 2021年4月16日 阿里供应链Java研发实习面试(二面)(70min) 自我介绍 介绍自己的研究生项目 ...

  5. 2021年4月12日 阿里供应链Java研发实习面试(一面)(含总结)

    title: 2021年4月12日 阿里供应链Java研发实习面试(一面) tags: 面经 2021年4月12日 阿里供应链Java研发实习面试(一面) 自我介绍介绍项目你用哪个版本的Java呢?( ...

  6. 第12届蓝桥杯国赛真题剖析-2021年5月29日Scratch编程初中级组

    [导读]:超平老师的<Scratch蓝桥杯真题解析100讲>已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第128讲. 第12届蓝桥杯Scratch国赛真题,这 ...

  7. 前程无忧51job爬虫利用selenium爬取岗位信息-2021年10月29日

    # 2021年10月29日完成,爬取51job网站获得相关岗位信息 from selenium import webdriver from selenium.webdriver import Fire ...

  8. 2021年8月29日到2021年9月4日

    参考计算机视觉最新理论2021年8月29日到2021年9月4日 - 云+社区 - 腾讯云 1.Learning to Discover Reflection Symmetry via Polar Ma ...

  9. 【财经期刊FM-Radio|2021年03月29日】

    title: [财经期刊FM-Radio|2021年03月29日] 微信公众号: 张良信息咨询服务工作室 [今日热点新闻一览↓↓] 北京时间周一亚洲早盘,美股期货和原油期货小幅走低. 低基数叠加&qu ...

最新文章

  1. java 1.8 tar.gz_linux安装java1.8
  2. 机器人越像人越好?Science子刊:被人形机器人一直盯着,你会变「蠢」
  3. YouTube测试购物功能、 2021 最值得效力的科技公司榜单、2020 移动应用年度报告等|Decode the Week...
  4. C++ vector 遍历修改汇总
  5. 断言java_Java几种常用的断言风格你怎么选?
  6. 【ADO.NET--MVC】初学MVC(MVC入门)(1)
  7. cordova android ios
  8. PHP 三联截骨,Steel骨盆三联截骨联合手术治疗大龄儿童发育性髋关节脱位疗效观察...
  9. 【下载】1200页CV经典《计算机视觉:算法与应用》第二版开放下载
  10. 计算机相关文献综述范文,计算机文献综述范文.doc
  11. 2019字节跳动实习面试
  12. layui 模板引擎使用
  13. Python一行流:列举所有k-mer组合(最简单写法)
  14. Redis 取消保护模式
  15. 获取字符串被分割后的总数组长度 java 类似UBound()方法
  16. 《Linux就该这么学》培训笔记_ch00_认识Linux系统和红帽认证
  17. 室内定位算法_【好设计论文】基于行人航迹推算的室内定位算法研究
  18. JAVA_获取正常上班工作日-除去节假日_双休日_加上加班
  19. 【转载】六一节到了,别忘了给孩子讲讲很久以前的事
  20. SOCKET_RAW 手动封装TCP协议

热门文章

  1. 如何实现采购管理流程的优化?
  2. Vehicle Spy3软件常用功能之模拟报文发送
  3. 如何建立一套自己的业务流程体系?选对工具很重要
  4. 均胜c语言面试题,2014年广东省高考英语听说考试真题F
  5. 做游戏美术设计赚不赚钱?
  6. win10系统日志事件ID 7023
  7. 西门子S7—200 Smart恒压供水控制程序
  8. 嵌入式开发中的滤波器设计
  9. shell 设置代理
  10. 转wap开发之wml详细教程