前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这是周鸿祎的简历,600元的迈巴赫卖了990万

这是周鸿祎的简历,600元的迈巴赫卖了990万

作者头像
沉默王二
发布2024-05-06 14:46:06
1070
发布2024-05-06 14:46:06
举报
文章被收录于专栏:沉默王二

大家好,我是二哥呀。

最近,互联网的早期网红周鸿祎又重新回到了大众的视野中心,600 元起拍的迈巴赫最终卖到了 990 万,这 10000 倍的溢价背后,是附送周老板的一次饭局,嘿嘿,有点当年巴菲特老爷子的味道(嗯,这饭这车都挺贵)。

并且周老板在各大短视频平台频繁出现,热度贼高,于是我去百度百科上看了一眼周老板的履历,竟然还是我们河南老乡,出生在驻马店市(他自己说籍贯是湖北省),后随父母在郑州上学读书,就读于第九中学,本科毕业于西安交通大学,因成绩优异,又保研成功。

整理不易,简历请表明出处:百度百科

周老板在网上的风评也是褒贬不一,争议性很大,比如说鲁大师,比如说 3q 大战,比如说无法卸载的安全全家桶。。。

但不管怎么说,周老板是懂流量的,是懂网红的,这波既节省了巨额的广告费,又顺势拉一波公司股价,到时候随随便便就是几个小目标(厉害)。

二哥的Java 面试指南专栏

可以看得出,竟然还是二哥一直强调的 Java 后端四大件,还在冲刺春招和暑期实习的同学可以收藏起来,好做到知彼知己百战不殆。

说一下阻塞非阻塞IO -说了下BIO和NIO

BIO(Blocking I/O):采用阻塞式 I/O 模型,线程在执行 I/O 操作时被阻塞,无法处理其他任务,适用于连接数较少的场景。

三分恶面渣逆袭:BIO

NIO(New I/O 或 Non-blocking I/O):采用非阻塞 I/O 模型,线程在等待 I/O 时可执行其他任务,通过 Selector 监控多个 Channel 上的事件,适用于连接数多但连接时间短的场景。

三分恶面渣逆袭:NIO完整示意图

线程安全,说一个使用场景 -讲了下单例模式的双重检查锁定,懒汉式和饿汉式

线程安全是 Java 并发编程中一个非常重要的概念,它指的是多线程环境下,多个线程对共享资源的访问不会导致数据的不一致性。

一个常见的使用场景是在实现单例模式时确保线程安全。

单例模式确保一个类只有一个实例,并提供一个全局访问点。在多线程环境下,如果多个线程同时尝试创建实例,单例类必须确保只创建一个实例。

饿汉式是一种比较直接的实现方式,它通过在类加载时就立即初始化单例对象来保证线程安全。

代码语言:javascript
复制
class Singleton {
    private static final Singleton instance = new Singleton();

    private Singleton() {
    }

    public static Singleton getInstance() {
        return instance;
    }
}

懒汉式单例则在第一次使用时初始化,这种方式需要使用双重检查锁定来确保线程安全,volatile 用来保证可见性,syncronized 用来保证同步。

代码语言:javascript
复制
public class LazySingleton {
    private static volatile LazySingleton instance;

    private LazySingleton() {}

    public static LazySingleton getInstance() {
        if (instance == null) { // 第一次检查
            synchronized (LazySingleton.class) {
                if (instance == null) { // 第二次检查
                    instance = new LazySingleton();
                }
            }
        }
        return instance;
    }
}

volatile关键字,说说别的你知道的关键字

当一个变量被声明为 volatile 时,Java 内存模型会确保所有线程看到该变量时的值是一致的。

深入浅出 Java 多线程:Java内存模型

也就是说,当线程对 volatile 变量进行写操作时,JMM 会在写入这个变量之后插入一个 Store-Barrier(写屏障)指令,这个指令会强制将本地内存中的变量值刷新到主内存中。

三分恶面渣逆袭:volatile写插入内存屏障后生成的指令序列示意图

当线程对 volatile 变量进行读操作时,JMM 会插入一个 Load-Barrier(读屏障)指令,这个指令会强制让本地内存中的变量值失效,从而重新从主内存中读取最新的值。

三分恶面渣逆袭:volatile写插入内存屏障后生成的指令序列示意图

synchronized 用过吗?怎么使用?

在 Java 中,synchronized 是最常用的锁,它使用简单,并且可以保证线程安全,避免多线程并发访问时出现数据不一致的情况。

随着 JDK 版本的进化,synchronized 的性能也得到了进一步的提升,不再像以前样重量级了。

synchronized 可以用在方法和代码块中。

①、修饰方法

代码语言:javascript
复制
public synchronized void increment() {
    this.count++;
}

当在方法声明中使用了 synchronized 关键字,就表示该方法是同步的,也就是说,线程在执行这个方法的时候,其他线程不能同时执行,需要等待锁释放。

如果是静态方法的话,锁的是这个类的 Class 对象,因为静态方法是属于类级别的。

代码语言:javascript
复制
public static synchronized void increment() {
    count++;
}

②、修饰代码块

代码语言:javascript
复制
public void increment() {
    synchronized (this) {
        this.count++;
    }
}

同步代码块可以减少需要同步的代码量,颗粒度更低,更灵活。synchronized 后面的括号中指定了要锁定的对象,可以是 this,也可以是其他对象。

final的用处

①、当 final 修饰一个类时,表明这个类不能被继承。比如,String 类、Integer 类和其他包装类都是用 final 修饰的。

二哥的 Java 进阶之路

②、当 final 修饰一个方法时,表明这个方法不能被重写(Override)。也就是说,如果一个类继承了某个类,并且想要改变父类中被 final 修饰的方法的行为,是不被允许的。

③、当 final 修饰一个变量时,表明这个变量的值一旦被初始化就不能被修改。

如果是基本数据类型的变量,其数值一旦在初始化之后就不能更改;如果是引用类型的变量,在对其初始化之后就不能再让其指向另一个对象。

二哥的 Java 进阶之路

但是引用指向的对象内容可以改变。

三分恶面渣逆袭:final修饰变量

java的基本类型

Java 的数据类型分两种:基本数据类型引用数据类型

二哥的 Java 进阶之路:Java数据类型

基本数据类型有哪些?
  • 数值型
    • 整数类型(byte、short、int、long)
    • 浮点类型(float、double)
  • 字符型(char)
  • 布尔型(boolean)

Java 基本数据类型范围和默认值:

数据类型

默认值

大小

boolean

false

1 比特

char

'\u0000'

2 字节

byte

0

1 字节

short

0

2 字节

int

0

4 字节

long

0L

8 字节

float

0.0f

4 字节

double

0.0

8 字节

java有哪些集合

Java 集合框架可以分为两条大的支线:

①、Collection,主要由 List、Set、Queue 组成:

  • List 代表有序、可重复的集合,典型代表就是封装了动态数组的 ArrayList 和封装了链表的 LinkedList;
  • Set 代表无序、不可重复的集合,典型代表就是 HashSet 和 TreeSet;
  • Queue 代表队列,典型代表就是双端队列 ArrayDeque,以及优先级队列 PriorityQueue。

②、Map,代表键值对的集合,典型代表就是 HashMap。

二哥的 Java 进阶之路:Java集合主要关系

用过哪些数据库

我经常使用的数据库是 MySQL,它是一个开源的关系型数据库管理系统,现在隶属于 Oracle 旗下。

也是我们国内使用频率最高的一种数据库,我在本地安装的 MySQL 的社区版,最新的 8.0 版本。

MySQL 官网

mysql的索引用过哪些

①、主键索引: 表中每行数据唯一标识的索引,强调列值的唯一性和非空性。

当创建表的时候,可以直接指定主键索引:

代码语言:javascript
复制
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    email VARCHAR(255)
);

id 列被指定为主键索引,同时,MySQL 会自动为这个列创建一个聚簇索引(主键索引一定是聚簇索引)。

可以通过 show index from table_name 查看索引信息,比如前面创建的 users 表:

二哥的 Java 进阶之路:索引信息

  • Non_unique 如果索引不能包含重复词,则为 0;如果可以,则为 1。这可以帮助我们区分是唯一索引还是普通索引。
  • Key_name 索引的名称。如果索引是主键,那么这个值是 PRIMARY。
  • Column_name 索引所包含的字段名。
  • Index_type 索引的类型,比如 BTREE、HASH 等。

②、唯一索引: 保证数据列中每行数据的唯一性,但允许有空值。

可以通过下面的语句创建唯一索引:

代码语言:javascript
复制
CREATE UNIQUE INDEX idx_username ON users(username);

同样可以通过 show index from table_name 确认索引信息:

二哥的 Java 进阶之路:唯一索引

Non_unique 为 0,表示这是一个唯一索引。

③、普通索引: 基本的索引类型,用于加速查询。

可以通过下面的语句创建普通索引:

代码语言:javascript
复制
CREATE INDEX idx_email ON users(email);

这次我们通过下面的语句一起把三个索引的关键信息查出来:

代码语言:javascript
复制
SELECT `TABLE_NAME` AS `Table`, `NON_UNIQUE`, `INDEX_NAME` AS `Key_name`, `COLUMN_NAME` AS `Column_name`, `INDEX_TYPE` AS `Index_type`
FROM information_schema.statistics
WHERE `TABLE_NAME` = 'users' AND `TABLE_SCHEMA` = DATABASE();

二哥的 Java 进阶之路:普通索引

可以确定 idx_email 是一个普通索引,因为 Non_unique 为 1。

④、全文索引:特定于文本数据的索引,用于提高文本搜索的效率。

假设有一个名为 articles 的表,下面这条语句在 content 列上创建了一个全文索引。

代码语言:javascript
复制
CREATE FULLTEXT INDEX idx_article_content ON articles(content);

数据库隔离级别有哪些

事务的隔离级别定了一个事务可能受其他事务影响的程度,MySQL 支持的四种隔离级别分别是:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。

三分恶面渣逆袭:事务的四个隔离级别

mysql是属于哪个隔离级别

可重复读是 MySQL 默认的隔离级别,避免了“脏读”和“不可重复读”,也在很大程度上减少了“幻读”问题。

用过redis吗 用来干什么

Redis 是 Remote Dictionary Service 三个单词中加粗字母的组合,是一种基于键值对(key-value)的 NoSQL 数据库。

三分恶面渣逆袭:Redis图标

在技术派实战项目中,很多地方都用到了 Redis,比如说用户活跃排行榜、作者白名单、常用热点数据(文章标签、文章分类)、计数统计(文章点赞收藏评论数粉丝数)等等。

技术派专栏

像用户活跃榜,主要是基于 Redis 的 Zset 实现的,可以根据 score(分值)进行排序,实时展示用户的活跃度。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 沉默王二 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说一下阻塞非阻塞IO -说了下BIO和NIO
  • 线程安全,说一个使用场景 -讲了下单例模式的双重检查锁定,懒汉式和饿汉式
  • volatile关键字,说说别的你知道的关键字
    • synchronized 用过吗?怎么使用?
    • final的用处
    • java的基本类型
      • 基本数据类型有哪些?
      • java有哪些集合
      • 用过哪些数据库
      • mysql的索引用过哪些
      • 数据库隔离级别有哪些
      • mysql是属于哪个隔离级别
      • 用过redis吗 用来干什么
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档