比亚迪真的有担当,985废物硕也给offer了
共 6538字,需浏览 14分钟
·
2024-06-19 14:04
大家好,我是二哥呀。
牛客上刷到一条帖子,挺有代表性的,楼主说自己是个 985 废物硕,秋招和春招都一败涂地,目前只有一个比亚迪的 offer,虽然网上有很多声音都在劝退比亚迪,但自己还是决定去了,不想毕业后出现空窗期。
这一看就是 24 届的同学,如果是我,这个时候比亚迪出手把我捞走,我会跪下磕三十个响头(😂)。
确实没必要把自己架在火堆上烤了,尤其是马上毕业的 24 届同学,先拿 offer 再说,网上哪家公司没有负面信息!
帖子的评论区也有牛友留言说,“比亚迪真的有担当,简单粗暴,甚至没有笔试,而且面试只有一轮,希望今年秋招依然能加大力度,这样自己最起码有个保底 offer”。
讲真,我对比亚迪的招聘力度一直挺欣赏的,不像互联网大厂难度那么高,对技术不是特别有天赋的同学来说,友好太多。
今天我们就以《Java 面试指南》中收录的《比亚迪面经同学 2》 技术面为例,来看看比亚迪的面试官都喜欢问哪些问题,好做到知彼知己百战不殆。
能看得出来,比亚迪的面试题相对很多互联网大厂来说还是非常友好的,简直不要太简单,都是一些非常基础的 Java 后端四大件的题目,难度不大。
1、二哥的 Linux 速查备忘手册.pdf 下载 2、三分恶面渣逆袭在线版:https://javabetter.cn/sidebar/sanfene/nixi.html
比亚迪面经
说说final关键字的作用
①、当 final 修饰一个类时,表明这个类不能被继承。比如,String 类、Integer 类和其他包装类都是用 final 修饰的。
②、当 final 修饰一个方法时,表明这个方法不能被重写(Override)。也就是说,如果一个类继承了某个类,并且想要改变父类中被 final 修饰的方法的行为,是不被允许的。
③、当 final 修饰一个变量时,表明这个变量的值一旦被初始化就不能被修改。
如果是基本数据类型的变量,其数值一旦在初始化之后就不能更改;如果是引用类型的变量,在对其初始化之后就不能再让其指向另一个对象。
但是引用指向的对象内容可以改变。
基本数据类型有哪些
-
数值型 -
整数类型(byte、short、int、long) -
浮点类型(float、double) -
字符型(char) -
布尔型(boolean)
Java 基本数据类型的默认值和占用大小:
数据类型 | 默认值 | 大小 |
---|---|---|
boolean | false | 1字节或 4 字节 |
char | '\u0000' | 2 字节 |
byte | 0 | 1 字节 |
short | 0 | 2 字节 |
int | 0 | 4 字节 |
long | 0L | 8 字节 |
float | 0.0f | 4 字节 |
double | 0.0 | 8 字节 |
说说String的常用方法
我自己常用的有:
-
length()
- 返回字符串的长度。 -
charAt(int index)
- 返回指定位置的字符。 -
substring(int beginIndex, int endIndex)
- 返回字符串的一个子串,从beginIndex
到endIndex-1
。 -
contains(CharSequence s)
- 检查字符串是否包含指定的字符序列。 -
equals(Object anotherObject)
- 比较两个字符串的内容是否相等。 -
indexOf(int ch)
和indexOf(String str)
- 返回指定字符或字符串首次出现的位置。 -
replace(char oldChar, char newChar)
和replace(CharSequence target, CharSequence replacement)
- 替换字符串中的字符或字符序列。 -
trim()
- 去除字符串两端的空白字符。 -
split(String regex)
- 根据给定正则表达式的匹配拆分此字符串。
抽象类和普通类有什么区别
抽象类使用 abstract 关键字定义,不能被实例化,只能作为其他类的父类。普通类没有 abstract 关键字,可以直接实例化。
抽象类可以包含抽象方法和非抽象方法。抽象方法没有方法体,必须由子类实现。普通类智能包含非抽象方法。
说说 io 流
Java IO 流的划分可以根据多个维度进行,包括数据流的方向(输入或输出)、处理的数据单位(字节或字符)、流的功能以及流是否支持随机访问等。
按照数据流方向如何划分?
-
输入流(Input Stream):从源(如文件、网络等)读取数据到程序。 -
输出流(Output Stream):将数据从程序写出到目的地(如文件、网络、控制台等)。
按处理数据单位如何划分?
-
字节流(Byte Streams):以字节为单位读写数据,主要用于处理二进制数据,如音频、图像文件等。 -
字符流(Character Streams):以字符为单位读写数据,主要用于处理文本数据。
按功能如何划分?
-
节点流(Node Streams):直接与数据源或目的地相连,如 FileInputStream、FileOutputStream。 -
处理流(Processing Streams):对一个已存在的流进行包装,如缓冲流 BufferedInputStream、BufferedOutputStream。 -
管道流(Piped Streams):用于线程之间的数据传输,如 PipedInputStream、PipedOutputStream。
说说 bio 和 nio 的区别
Java 提供了多种 IO 模型来处理输入和输出操作,包括传统的阻塞 IO、非阻塞 IO 和异步 IO。
BIO(Blocking I/O):采用阻塞式 I/O 模型,线程在执行 I/O 操作时被阻塞,无法处理其他任务,适用于连接数较少的场景。
NIO(New I/O 或 Non-blocking I/O):采用非阻塞 I/O 模型,线程在等待 I/O 时可执行其他任务,通过 Selector 监控多个 Channel 上的事件,适用于连接数多但连接时间短的场景。
Java 的集合框架有哪些?
Java 集合框架可以分为两条大的支线:
①、Collection,主要由 List、Set、Queue 组成:
-
List 代表有序、可重复的集合,典型代表就是封装了动态数组的 ArrayList 和封装了链表的 LinkedList; -
Set 代表无序、不可重复的集合,典型代表就是 HashSet 和 TreeSet; -
Queue 代表队列,典型代表就是双端队列 ArrayDeque,以及优先级队列 PriorityQueue。
②、Map,代表键值对的集合,典型代表就是 HashMap。
HashMap 和 hashtable 的区别
在 Java 中,有 3 种线程安全的 Map 实现,最常用的是ConcurrentHashMap和Collections.synchronizedMap(Map)
包装器。
Hashtable 也是线程安全的,但它的使用已经不再推荐使用,因为 ConcurrentHashMap 提供了更高的并发性和性能。
①、HashTable 是直接在方法上加 synchronized 关键字,比较粗暴。
ArrayList 和 vector 的区别
Vector 属于 JDK 1.0 时期的遗留类,已不推荐使用,仍然保留着是因为 Java 希望向后兼容。
ArrayList 是在 JDK 1.2 时引入的,用于替代 Vector 作为主要的非同步动态数组实现。因为 Vector 所有的方法都使用 synchronized 关键字进行了同步,单线程环境下效率较低。
aop 在 Spring中的应用
AOP,也就是面向切面编程,是一种编程范式,旨在提高代码的模块化。比如说可以将日志记录、事务管理等分离出来,来提高代码的可重用性。
AOP 的核心概念包括切面(Aspect)、连接点(Join Point)、通知(Advice)、切点(Pointcut)和织入(Weaving)等。
① 像日志打印、事务管理等都可以抽离为切面,可以声明在类的方法上。
② 在 Spring AOP 中,连接点总是表示方法的执行。
③ Spring AOP 支持五种类型的通知:前置通知、后置通知、环绕通知、异常通知、最终通知等。
④ 在 AOP 中,切点用于指定我们想要在哪些连接点上执行通知的规则。
⑤ 织入是指将切面应用到目标对象并创建新的代理对象的过程。Spring AOP 默认在运行时通过动态代理方式实现织入。
像 @Transactional
注解,就是一个典型的 AOP 应用,它就是通过 AOP 来实现事务管理的。我们只需要在方法上添加 @Transactional
注解,Spring 就会在方法执行前后添加事务管理的逻辑。
Redis 的数据类型有哪些
Redis 有五种基本数据类型,这五种数据类型分别是:string(字符串)、hash(哈希)、list(列表)、set(集合)、sorted set(有序集合,也叫 zset)。
set 和 zset 的区别
集合是字符串的无序集合,集合中的元素是唯一的,不允许重复。和 Java 集合框架中的 Set 有相似之处。
集合主要有以下两个使用场景:
-
标签(tag) -
共同关注
Zset,有序集合,比 set 多了一个排序属性 score(分值)。
主要应用场景有:
-
用户点赞统计 -
用户排序
比如技术派实战项目中,我们就使用 Zset 来实现了用户月度活跃排行榜。
内容来源
-
星球嘉宾三分恶的面渣逆袭:https://javabetter.cn/sidebar/sanfene/nixi.html -
二哥的 Java 进阶之路(GitHub 已有 12000+star):https://javabetter.cn
ending
一个人可以走得很快,但一群人才能走得更远。二哥的编程星球已经有 5500 多名球友加入了,如果你也需要一个良好的学习环境,戳链接 🔗 加入我们吧。这是一个编程学习指南 + Java 项目实战 + LeetCode 刷题的私密圈子,你可以阅读星球专栏、向二哥提问、帮你制定学习计划、和球友一起打卡成长。
两个置顶帖「球友必看」和「知识图谱」里已经沉淀了非常多优质的学习资源,相信能帮助你走的更快、更稳、更远。
欢迎点击左下角阅读原文了解二哥的编程星球,这可能是你学习求职路上最有含金量的一次点击。
最后,把二哥的座右铭送给大家:没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。共勉 💪。