转行速成:我的Python学习和OD面试经验分享
技术一面(6.6)
华为技术一面 约50min
流程:手撕代码+阐述代码思路,八股文+项目
- 手撕代码:HJ2查找兄弟单词
- == 和equals区别
- final的特点
- 抽象类是不是只能有抽象方法,final能不能修饰抽象类
- ArraList 和 LinkList的区别
- HashTable 和 HashMap的区别:
区别1--线程安全:HashMap非线程安全, HashTable是线程安全的,因为她的方法都是用synchronized修饰的。所以,性能上HashMap优于HashTable。
区别2--null键和null值的支持:HashMap允许使用null作为键和值,但是键为null只能有一个,值为null可以有多个。HashTable不允许null作为键和值,果尝试将null存储在Hashtable中,会抛出NullPointerException。
区别3--初始容量和扩容大小:HashMap:默认的初始化大小为16。之后每次扩充,容量变为原来的2倍。创建时如果给定了初始容量值,HashMap会将其扩充为2的幂次方大小。Hashtable:默认的初始大小为11,之后每次扩充,容量变为原来的2n+1。创建时如果给定了容量初始值,那么Hashtable会直接使用你给定的大小。
- 哪些集合是线程安全的?
-Vector及其实现类(stack、LinkVector),基于数组的实现,所有公共方法都被synchronized关键字包围。
-Collections.synchronized*:这是一个工厂方法,可以生成线程安全的集合。
-HashTable基于散列的实现,所有公共方法都被synchronized关键字包围。
-ConcurrentHashMap:一个高并发的HashMap实现,它提供更好的并发性能。
- 创建线程的方式有哪些?
继承Thread类,实现Runnable接口,实现Callable,使用线程池。
- 浅拷贝和深拷贝
浅拷贝是指复制对象时:
对于基本类型是值传递,新对象会拷贝一个副本,其中一个对象的成员变量的改变不会影响到另一个对象的成员变量。
对于引用类型是地址传递,就是将成员变量引用的地址复制一份给新对象,两个对象的成员变量都指向同一个对象,在这种情况下,在⼀个对象中修改该成员变量会影响到另⼀个对象的该成员变量值。
深拷贝来说仅要复制对象的所有基本数据类型的成员变量值,还要复制引用类型成员变量所指向的对象,并申请存储空间。
- 说说你熟悉的设计模式
- get请求 和 post请求区别
- 什么是xss攻击?xss攻击防范手段
- mybatis中# 和 $的区别
- mysql中left join 和right join的区别
- redis缓存穿透
- redis有哪些数据类型
- Linux常用命令:
端口被哪个程序占用命令:netstat
把字符串"abc"批量替换成"cba"命令: sed
查找某个字符串"abc"前后10行命令: grep
- 介绍一个做得最好的项目,项目提问
技术二面(6.7)
2024.6.7 华为技术二面 约45min
流程:手撕代码+阐述代码思路,八股文+项目
- 手撕代码:LC394. 字符串解码
- 自我介绍
- 熟悉哪些设计模式及使用场景
- 说说spring AOP及你在项目中使用场景
- spring的注解有哪些及作用
- java并发:你们在项目中是怎么创建线程的
- git的一个命令(不知道)
- 你都用过哪些Linux命令
- 说说CompletableFuture
使用场景:当主线程需要执行一个很耗时的计算任务,可以通过CompletableFuture把这个任务放到异步线程中执行,主线程不阻塞继续处理其他任务。
功能:它可以将多个任务后台并发执行,不会阻塞主线程;也可以将多个并发任务按照依赖关系串行执行;anyOf() ⽅法获取第⼀个最先完成的任务结果、allOf() ⽅法汇总所有任务的结果等功能
主管面(6.12)
2024.6.12 主管面 30min
- 自我介绍
- 目前的工作状态,将来的目标和规划
3.工作经历提问
- 你有什么问题