【华为】面试真题_2021年
整理不易,转发请附有源地址如有问题欢迎各位童鞋指出,希望大家都可以找到自己满意的工作!
1、Java常用集合及特点
List:ArrayList、LinkedList、Vector、Stack Set:LinkedSet、HashSet、TreeSet Queue->Deque->LinkedList。
Map:HashMap、LinkedHashMap、TreeMap Dictionary->HashTable->Properties。
Vector: 底层数据结构是数组,查询快,增删慢,线程安全,效率低,默认长度为10,超过会100%延长,变成20,浪费空间。
特点:
list: 有序可重复
ArrayList :基于数组,便于按index 访问,超过数组需要扩容,扩容成本较高,查询效率高
LinkedList:使用链表实现,无需扩容,增删效率高
Set:无序不可重复
HashSet:底层数据结构是哈希表(无序,唯一),通过hashcode()和equals()保证元素唯一。
LinkedHashSet: 底层数据结构是链表和哈希表(FIFO 插入有序,唯一),由链表保证元素有序,由哈希表保证元素唯一。
TreeSet:底层数据结构是红黑树(唯一,有序),通过自然排序和比较器排序保证元素有序,根据比较返回值是否是0 来保证元素唯一性。
TreeMap 是有序的。
HashMap :空间换时间,哈希冲突不大的情况下查找数据性能很高。
LinkedHashMap 基本特点:继承自HashMap,对Entry 集合添加了一个双向链表。
若想深入了解可点击深入理解Java中的List、Set与Map集合
2、开启一个线程的方法?
- 继承Thread 类,新建一个当前类对象,并且运行其start()方法
- 实现Runnable 接口,然后新建当前类对象,接着新建Thread 对象时把当前类对象传进去,最后运行Thread 对象的start()方法
- 实现Callable 接口,新建当前类对象,在新建FutureTask 类对象时传入当前类对象,接着新建Thread 类对象时传入FutureTask 类对象,最后运行Thread 对象的start()方法
3、Java面向对象包括哪些特性,怎么理解的?
- 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口。
- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段。
- 多态:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A 系统访问B 系统提供的服务时,B 系统有多种提供服务的方式,但一切对A系统来说都是透明的。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:
第一:方法重写(子类继承父类并重写父类中已有的或抽象的方法);
第二:对象造型(用父类型引用指向子类型对象,这样同样的引用调用同样的方法就会根据子
类对象的不同而表现出不同的行为)。 - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
4、Java 如何保证线程安全?
- 使用同步代码块
- 使用同步方法
- 使用Lock 锁机制, 通过创建Lock 对象,采用lock()加锁,unlock()解锁,来保护指
定的代码块。
5、介绍Spring MVC 的工作流程?
- 用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet。
- DispatcherServlet 接收到请求后会调用HandlerMapping 处理器映射器。由此得知,该请求该由哪个Controller 来处理(并未调用Controller,只是得知)
- DispatcherServlet 调用HandlerAdapter 处理器适配器,告诉处理器适配器应该要去执行哪个Controller
- HandlerAdapter 处理器适配器去执行Controller 并得到ModelAndView(数据和视图),并层层返回给DispatcherServlet
- DispatcherServlet 将ModelAndView 交给ViewReslover 视图解析器解析,然后返回真正的视图。
- DispatcherServlet 将模型数据填充到视图中
- DispatcherServlet 将结果响应给用户
核心流程可参考下图
6、Spring框架中用到了哪些设计模式?
- 工厂设计模式: Spring 使用工厂模式通过BeanFactory、ApplicationContext 创建bean 对象。
- 代理设计模式: Spring AOP 功能的实现。
- 单例设计模式: Spring 中的Bean 默认都是单例的。
- 模板方法模式: Spring 中jdbcTemplate、hibernateTemplate 等以Template 结尾的对数据库操作类,它们就使用到了模板模式。
- 包装器设计模式: 我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。
- 观察者模式: Spring 事件驱动模型就是观察者模式很经典的一个应用。
- 适配器模式: Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配Controller。
7、Redis 的特点是什么?
Redis 本质上是一个Key-Value 类型的内存数据库,很像Memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush 到硬盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过10 万次读写操作,是已知
性能最快的Key-Value DB。Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此外单个value 的最大限制是1GB,不像Memcached 只能保存1MB 的数据,因此Redis 可以
用来实现很多有用的功能。比方说用他的List 来做FIFO 双向链表,实现一个轻量级的高性能消息队列服务,用他的Set 可以做高性能的tag 系统等等。另外Redis 也可以对存入的Key-Value 设置expire
时间,因此也可以被当作一个功能加强版的Memcached 来用。
Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因
此Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。
8、为什么使用Redis,有什么好处?
- 速度快,因为数据存在内存中,类似于HashMap,HashMap 的优势就是查找和操作的
时间复杂度都是O(1) - 支持丰富数据类型,支持string(最大存储512MB),list,set,sorted set,hash
- 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不
执行 - 丰富的特性:可用于缓存,消息,按key 设置过期时间,过期后将会自动删除
9、Redis 雪崩和击穿了解吗?
缓存击穿
问题:某个KEY 失效的时候,正好有大量并发请求访问这个KEY。
分析:跟穿透其实很像,属于比较偶然的。
解决办法:KEY 的更新操作添加全局互斥锁。完全以缓存为准,使用延迟异步加载的策略(异步线程负责维护缓存的数据,定期或根据条件触发更新),这样就不会触发更新。
缓存雪崩
- 问题:当某一时刻发生大规模的缓存失效的情况,导致大量的请求无法获取数据,从而将流量压力传导到数据库上,导致数据库压力过大甚至宕机。
- 原因:一般而言,缓存雪崩有2 种可能性:大量的数据同一个时间失效:比如业务关系强相关的数据要求同时失效Redis 宕机
- 分析:一般来说,由于更新策略、或者数据热点、缓存服务宕机等原因,可能会导致缓存数据同一个时间点大规模不可用,或者都更新。所以,需要我们的更新策略要在时间上合适,数据要均匀分享,缓存服务器要多台高可用。
- 解决办法:更新策略在时间上做到比较平均。如果数据需要同一时间失效,可以给这批数据加上一些随机值,使得这批数据不要在同一个时间过期,降低数据库的压力。使用的热数据尽量分散到不同的机器上。多台机器做主从复制或者多副本,实现高可用。做好主从的部署,当主节点挂掉后,能快速的使用从结点顶上。实现熔断限流机制,对系统进行负载能力控制。对于非核心功能的业务,拒绝其请求,只允许核心功能业务访问数据库获取数据。服务降级:提供默认返回值,或简单的提示信息。
10、什么是面向对象,谈谈你的理解?
世间万物都可以看成一个对象。每个物体包括动态的行为和静态的属性,这些就构成了一个对
象。
11、访问数据库除了JDBC 还有什么?
- 自己封装JDBC 的工具类
- Commons-Dbutils+dbcp【QueryRunner】
- SpringJDBC【JdbcTemplate】
- JPA【配置文件、domain 实体类+注解、EntityManager】
- SpringDataJpa
- Hibernate 框架
- Mybatis
12、你知道哪些设计原则?
- 遵循单一职责原则
- 开放-封闭原则
- 里氏代换原则(LSP)
- 依赖倒置原则
- 接口隔离原则(Interface Segregation Principle)
- 迪米特法则(Law of Demeter)
13、在生产环境Linux 服务器上,发现某台运行Java 服务的服务器的CPU100%,不借助任何可视化工具,怎么进行问题的定位?
- top 找出进程CPU 比较高PID
- top -Hp PID 打印该PID 进程下哪条线程的CPU 占用比较高tid
- printf “%x\n” tid 将该id 进行16 进制转换tidhex
- jstack PID |grep tidhex 打印线程的堆栈信息
14、JDK 里面带的工具你知道哪些?
- jstat:虚拟机进程状况工具
- jinfo:Java 配置信息工具
- jmap:Java 内存映像工具
- jhat:虚拟机堆转储快照分析工具
- jstack:Java 堆栈跟踪工具
- JConsole: Java 监视与管理控制台
- VisualVM: 多合一故障处理工具
15、基本数据类型bit 长度?
- byte:1*8
- short:2*8
- int: 4*8
- long: 8*8
- float: 4*8
- double: 8*8
- char: 2*8
- boolean: 1*8
16、char 能不能存中文?
可以,不过,如果某个特殊的汉字没有被包含在unicode 编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。
17、谈谈你对泛型的理解?
Java 中的泛型有3 种形式,泛型方法,泛型类,泛型接口。Java 通过在编译时类型擦除的方式来实现泛型。擦除时使用Object 或者界定类型替代泛型,同时在要调用具体类型方法或者成员变量的时候插入强转代码,为了保证多态特性,Java 编译器还会为泛型类的子类生成桥接方法。类型信息在编译阶段被擦除之后,程序在运行期间无法获取类型参数所对应的具体类型。
18、Java 程序是怎样运行的?
- 首先通过Javac 编译器将.java 转为JVM 可加载的.class 字节码文件。
- Javac 是由Java 编写的程序,编译过程可以分为:
① 词法解析,通过空格分割出单词、操作符、控制符等信息,形成token 信息流,传递给语法解析器。
② 语法解析,把token 信息流按照Java 语法规则组装成语法树。
③ 语义分析,检查关键字使用是否合理、类型是否匹配、作用域是否正确等。
④ 字节码生成,将前面各个步骤的信息转换为字节码。 - 字节码必须通过类加载过程加载到JVM 后才可以执行,执行有三种模式,解释执行、JIT编译执行、JIT 编译与解释器混合执行(主流JVM 默认执行的方式)。混合模式的优势在于解释器在启动时先解释执行,省去编译时间。
- 之后通过即时编译器JIT 把字节码文件编译成本地机器码。
- Java 程序最初都是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁,就会认定其为"热点代码",热点代码的检测主要有基于采样和基于计数器两种方式,为了提高热点代码的执行效率,虚拟机会把它们编译成本地机器码,尽可能对代码优化,在运行时完成这个任务的后端编译器被称为即时编译器。
- 还可以通过静态的提前编译器AOT 直接把程序编译成与目标机器指令集相关的二进制代码。
19、GC root 有哪些?
- Thread-存活的线程。
- Java 虚拟机栈中的引用的对象。
- 方法区中的类静态属性引用的对象。(一般指被static 修饰的对象,加载类的时候就加载到内存中。)
- 方法区中的常量引用的对象。
- 本地方法栈中的JNI(native 方法)引用的对象。
- Monitor Used-用于同步监控的对象。
20、栈帧的大小什么时候确定?
有时候编译期能够确定,有些时候函数的栈帧的大小在编译期并不确定。比如用了VLA。所以一般会有两个寄存器(IA-32 上就是ebp 和esp)来记录栈帧的首尾地址。当进入一个函数时,首先把上个栈帧的首尾地址分别保存起来(一般做法是将ebp 压栈、并将esp 写入ebp),接着再分配新的栈帧大小(先给esp 减一个常数,如果需要动态分配再接着减)。
21、静态filed 声明和构造器哪个先执行?
filed 声明先执行。
22、线程创建方式是什么?
- 通过继承Thread 类创建线程类
- 实现Runnable 接口创建线程类
- 通过Callable 和Future 接口创建线程
23、传统I/O 跟NIO 的区别?
- 所有I/O 都被视为单个的字节的移动,通过一个称为Stream 的对象一次移动一个字节。流I/O 用于与外部世界接触。它也在内部使用,用于将对象转换为字节,然后再转换回对象。传统流IO 的好处是使用简单,将底层的机制都抽象成流,但缺点就是性能不足。而且IO 的各种流是阻塞的。这意味着,当一个线程调用read() 或write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了。
- 原来的I/O 库(在java.io.*中) 与NIO 最重要的区别是数据打包和传输的方式。原来的I/O 以流的方式处理数据,而NIO 以块的方式处理数据。
- NIO 性能的优势就来源于缓冲的机制(buffer 机制),不管是读或者写都需要以块的形式写入到缓冲区中。NIO 实际上让我们对IO 的操作更接近于操作系统的实际过程。
- NIO 作为非阻塞式的IO,它的优点就在于,1、它由一个专门的线程去处理所有的IO事件,并负责分发;2、事件驱动,只有事件到了才会触发,而不是同步的监听这个事件;3、线程之间通过wait,notify 等方式通讯。保证每次上下文切换都是有意义的。减少无谓的线程切换。
- 当我们在执行持续性的操作(如上传下载)时,IO 的方式是要优于NIO 的。分清情况,合理选用。
- NIO 相对于IO 流的优势:
非阻塞
buffer 机制
流替代块
24、消息队列的在各种场景下如何选型?
- 优先级队列;队列设置最大的优先级,之后每条消息设置对应的优先级,队列根据消息优先级进行消费,(在有可能队列堆积的情况才有意义);应用场景:不同业务消息推送。
- 延迟队列:消息发送后,并不想让消费者立即拿到消息,等待特定的事件后,消费者才能拿到并消费;应用场景:订单系统中订单支付30 分钟内没有支付成功,那么将这个订单进行异常处理;远程操作智能设备在指定时间进行工作等。(rabbit 中没有延迟队列,但可以借助死信队列与TTL 设置来完成)
- 死信队列:当消息在一个队列中变成死信之后,它能被重新被发送到另一个交换器(DLX交换器)中,绑定DLX 的队列就称为死信队列。
- 重试队列:消费端,一直不回传消费的结果,rocketmq 认为消息没收到,consumer 下一次拉取,broker 依然会发送该消息(有次数限制)。重试队列其实可以看成是一种回退队列,具体指消费端消费消息失败时,为防止消息无故丢失而重新将消息回滚到Broker 中。
- 消费模式: 推模式:对于kafka 而言,由Broker 主动推送消息至消费端,实时性较好,不过需要一定的流制机制来确保服务端推送过来的消息不会压垮消费端。拉模式:对于kafka 而言,消费端主动向Broker 端请求拉取(一般是定时或者定量)消息,实时性较推模式差,但是可以根据自身的处理能力而控制拉取的消息量。
- 消息回溯:重置消息offset(如:kafka、rokcetMq) 一般消息在消费完成之后就被处理了,之后再也不能消费到该条消息。消息回溯正好相反,是指消息在消费完成之后,还能消费到之前被消费掉的消息。对于消息而言,经常面临的问题是“消息丢失”,至于是真正由于消息中间件的缺陷丢失还是由于使用方的误用而丢失一般很难追查,如果消息中间件本身具备消息回溯功能的话,可以通过回溯消费复现“丢失的”消息进而查出问题的源头之所在。消息回溯的作用远不止与此,比如还有索引恢复、本地缓存重建,有些业务补偿方案也可以采用回溯的方式来实现。
- 消息堆积:流量削峰是消息中间件的一个非常重要的功能,而这个功能其实得益于其消息堆积能力。从某种意义上来讲,如果一个消息中间件不具备消息堆积的能力,那么就不能把它看做是一个合格的消息中间件。消息堆积分内存式堆积和磁盘式堆积。
- 消息持久化:持久化确保MQ 的使用不只是一个部分场景的辅助工具,而是让MQ 能像数据库一样存储核心的数据。有些功能是默认不开启的,需要进行配置。
- 多租户: 也可以称为多重租赁技术,是一种软件架构技术,主要用来实现多用户的环境下公用相同的系统或程序组件,并且仍可以确保各用户间数据的隔离性。RabbitMQ 就能够支持多租户技术,每一个租户表示为一个vhost,其本质上是一个独立的小型RabbitMQ服务器,又有自己独立的队列、交换器及绑定关系等,并且它拥有自己独立的权限。vhost 就像是物理机中的虚拟机一样,它们在各个实例间提供逻辑上的分离,为不同程序安全保密地允许数据,它既能将同一个RabbitMQ 中的众多客户区分开,又可以避免队列和交换器等命名冲突。
- 跨语言支持: 对很多公司而言,其技术栈体系中会有多种编程语言,如C/C++、JAVA、Go、PHP 等,消息中间件本身具备应用解耦的特性,如果能够进一步的支持多客户端语言,那么就可以将此特性的效能扩大。跨语言的支持力度也可以从侧面反映出一个消息中间件的流行程度。
- 消息顺序消息:先进先出、逐条进行消费顾名思义,消息顺序性是指保证消息有序。这个功能有个很常见的应用场景就是CDC(Change Data Chapture),以MySQL 为例,如果其传输的binlog 的顺序出错,比如原本是先对一条数据加1,然后再乘以2,发送错序之后就变成了先乘以2 后加1 了,造成了数据不一致。
- 安全机制: 在Kafka 0.9 版本之后就开始增加了身份认证和权限控制两种安全机制。身份认证是指客户端与服务端连接进行身份认证,包括客户端与Broker 之间、Broker 与Broker 之间、Broker 与ZooKeeper 之间的连接认证,目前支持SSL、SASL 等认证机制。权限控制是指对客户端的读写操作进行权限控制,包括对消息或Kafka 集群操作权限控制。权限控制是可插拔的,并支持与外部的授权服务进行集成。对于RabbitMQ而言,其同样提供身份认证(TLS/SSL、SASL)和权限控制(读写操作)的安全机制。
- 事务支持: 事务本身是一个并不陌生的词汇,事务是由事务开始(Begin Transaction)和事务结束(End Transaction)之间执行的全体操作组成。支持事务的消息中间件并不在少数,Kafka 和RabbitMQ 都支持,不过此两者的事务是指生产者发生消息的事务,要么发送成功,要么发送失败。消息中间件可以作为用来实现分布式事务的一种手段,但其本身并不提供全局分布式事务的功能。
25、Java 的安全性体现在哪里?
- Java SE 安全性概述Java SE
- 平台基于一个动态、可扩展、基于标准、可互操作的安全架构。加密、身份验证和授权、
公共密钥基础架构等安全特性是内置的。Java - 安全模型基于一个可定制的“沙盒”,Java 软件程序可在其中安全运行,对系统或用户
无潜在风险。 - Java 编译器和虚拟机强制实施的内置的语言安全特性:
- 强大的数据类型管理
- 自动内存管理
- 字节码验证
- 安全的类加载
26、static 方法怎么访问非static 变量?
类的静态成员(变量和方法)都属于类本身,在类加载的时候就会分配内存,可以通过类名直接访问
27、讲下你理解的Java 多继承?
- 若子类继承的父类中拥有相同的成员变量,子类在引用该变量时将无法判别使用哪个父类的成员变量
- 若一个子类继承的多个父类拥有相同方法,同时子类并未覆盖该方法(若覆盖,则直接使用子类中该方法),那么调用该方法时将无法确定调用哪个父类的方法。
28、Java 基本类型有哪些?
- byte 1
- short 2
- int 4
- long 8
- float 4
- double 8
- char 2
- boolean 1
29、线程池如果满了会怎么样?
- 如果使用的是无界队列Linke dBlockingQueue,也就是无界队列的话,没关系,继续添加任务到阻塞队列中等待执行,因为LinkedBlockingQueue 可以近乎认为是一个无穷大的队列,可以无限存放任务
- 如果使用的是有界队列比如ArrayBlockingQueue , 任务首先会被添加到
ArrayBlockingQueue 中,ArrayBlockingQueue 满了,会根据maximumPoolSize 的值增加线程数量,如果增加了线程数量还是处理不过来,ArrayBlockingQueue 继续满,那么则会使用拒绝策略RejectedExecutionHandler 处理满了的任务,默认是AbortPolicy。
30、什么是双亲委派机制,它有什么作用?
双亲委派机制的意思是除了顶层的启动类加载器以外,其余的类加载器,在加载之前,都会委派给它的父加载器进行加载。这样一层层向上传递,直到祖先们都无法胜任,它才会真正的加载。
- 通过带有优先级的层级关可以避免类的重复加载;
- 保证Java 程序安全稳定运行,Java 核心API 定义类型不会被随意替换。
双亲委派详解以及如何打破
【华为】面试真题_2021年相关推荐
- 2023华为面试真题
[华为]面试真题: 面试前需要准备: 1. Java 八股文:了解常考的题型和回答思路: 2. 算法:刷 100-200 道题,记住刷题最重要的是要理解其思想,不要死记硬背,碰上原题很难,但 大多数的 ...
- 【美团】面试真题_2021年
1.Spring AOP底层原理 aop 底层采用动态代理机制实现:接口+实现类 如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象. 没有实现接口的对 ...
- 2020Android大厂高频面试题(字节跳动+阿里+华为+小米等20家大厂面试真题)附面经!
Android大厂高频面试题 1. 下列哪些语句关于内存回收的说明是正确的? ( ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程 ...
- 2022华为Android面试真题,腾讯安卓面试
一.java相关 java基础 1.java 中==和 equals 和 hashCode 的区 <Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义> An ...
- 华为Java面试真题解析,都是精髓!
前言 面试时间将近两个小时(期间等待二面面试官来面我的时候等了半个多小时)面试官问的东西很多,还挖了好几个坑,一个技术点套着一个技术点的问,一定要做好万全的准备.问了一些基本层面上的技术点都答出来了, ...
- 堪称最强!字节跳动+阿里+华为+小米等10家大厂面试真题,社招面试心得
前言 很久没有发过文章,今天来说一下应届生找工作的问题吧,就算你是打摆子都要看完~~ 金九银十是社招以及校招的火热时期,但今年很明显没有往年般的火热,面试也是越来越难了.对于应届生来说,如何能够在面试 ...
- 华为 Java 面试真题,拥有百万粉丝的大牛讲述学 Java 的历程
阿里的人才画像 其实最近两年自己一直在做面试官,也面试过很多优秀的人,心里大概有一个标准,知道什么样的人才是我们想要的人. 但是这个标准我一直都没有仔细的去思考过,刚好最近有时间,我好好的思考了一下, ...
- 前端开发应届生面试指南(含各大公司具体指南及面试真题)
先介绍一下本人应届前端开发一枚,非科班出身,专业是化学,大学期间开始自学前端开发,在今年春招实习和秋招的时候投了一些公司,拿到一些Offer(京东.拼多多.虎牙等),总体来说还算满意,特地写一篇文章来 ...
- 2.牛批了 Android 2021中高级面试题 一线大厂和二线大厂面试真题精选 (京东 附答案)第二套 22k+
笔者是面霸,面试500+场 当过考官:面过别人500+场 去过500强,也呆过初创公司. 斩获腾讯.美团,字节跳动,蚂蚁金服,华为.OPPO,offer!我有一套速通大厂技巧分享给 ...
最新文章
- java ibatis 锁表_oracle查看被锁的表和解锁
- centos 编译 mysql_Centos编译mysql
- 面向对象和基于对象的区别
- jquery animate
- 【数据挖掘】中文期刊点评
- 杀掉php所有进程,杀死某个用户的所有进程
- 洛谷 P2056 采花
- URAL 1992 CVS 可持久化链栈
- 【LeArm】动手实践机械臂(一)
- 设计模式:第二章--抽象工厂模式
- 【Java IO流】RandomAccessFile类的使用
- 过滤器和拦截器的区别_拦截器和过滤器的区别
- 自动化编程 ai_人工智能,自动化和音乐
- java环境变量配置失败_java环境变量配置失败是怎么回事?出错解决办法分享
- Struts2教程之一基本使用
- 最小二乘法平面方程拟合计算, 点云法向量估算
- iOS Mac安装ipa文件的几种方法
- 深圳学区房还值得购买吗
- Python语法小白入门
- SDN 教程[2]: SDN基础操作
热门文章
- qq轻聊版打开后显示服务器返回数据错误,QQ轻聊版已从官方消失 腾讯难道反悔了?...
- 腾讯安全发布《银行业数据安全白皮书》 指明建设数据安全体系四大要素
- 03 Hadoop(HDFS)
- SMBUS通信波形分析
- 从零开始学AI(Python基础)
- [Bug Fix]Messy Audio语音电话不清晰问题
- Pycharm远程调试Qt GUI界面,报错Could not connect to any X display.
- 如何在服务器端开启X Display(本地可操作远程界面)
- idea搭建vue-cli项目
- pandas网络爬虫(一)