程序员男朋友晚上越来越晚回家,问他也不回答,原来是在公司看这个!

不知道各位帅哥美女最近面试是否顺利,是否会经常问到一些自己不熟悉的问题,不知道怎么去回答这些问题,今天笔者给大家整理了2020年大厂经常问到了的一些面试真题及解析,内容点包含有java集合,jvm,并发编程,spring,mybatis,springMVC,微服务,Dubbo,netty,网络,zookeeper,kafka,rabbitMQ,readis缓存,数据库,设计模式 等一线大厂互联网大厂常问到的面试真题。

百度试题

在这里插入图片描述

1 编程:
用 C 语言实现一个 revert 函数,它的功能是将输入的字符串在原串上倒
序后返回。

2 编程:
用 C 语言实现函数 void * memmove(void *dest,const void *src,size_t
n)。memmove 函数的功能是拷贝 src 所指的内存内容前 n 个字节到 dest 所
指的地址上。

3 英文拼写纠错:
在用户输入英文单词时,经常发生错误,我们需要对其进行纠错。假设
(1)请描述你解决这个问题的思路;
(2)请给出主要的处理流程,算法,以及算法的复杂度;
(3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。

4 寻找热门查询:
搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下
来,每个查询串的长度为 1-255 字节。假设目前有一千万个记录,这些查询
串的重复度比较高,虽然总数是 1 千万,但如果除去重复后,不超过 3 百万
个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。请
你统计最热门的 10 个查询串,要求使用的内存不能超过 1G。
(1)请描述你解决这个问题的思路;
(2)请给出主要的处理流程,算法,以及算法的复杂度。

5 集合合并:
给定一个字符串的集合,格式如: {aaa bbb ccc}, {bbb ddd},{eee fff},
{ggg},{ddd hhh} 要求将其中交集不为空的集合合并,要求合并完成后的集
合之间无交集,例如上例应输出 {aaa bbb ccc ddd hhh},{eee fff}, {ggg}
(1)请描述你解决这个问题的思路;
(2)请给出主要的处理流程,算法,以及算法的复杂度
(3)请描述可能的改进(改进的方向如效果,性能等等,这是一个开放问题)。

1 题
char *revert(char * str)
{
int n=strlen(str);
int i=0;
char c;
for(i=0;i {
c=str;
str=str[n-i];
str[n-i]=c;
}
return str;
}

华为试题

在这里插入图片描述

JAVA 方面
1 面向对象的特征有哪些方面
2 String 是最基本的数据类型吗?
3 int 和 Integer 有什么区别
4 String 和 StringBuffer 的区别
5 运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常
操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛
出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异
常。
6 说出一些常用的类,包,接口,请各举 5 个
7 说出 ArrayList,Vector, ArrayLlinkedListd 的存储性能和特性
ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的
数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉
及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了
synchronized 方法(线程安全),通常性能上较 ArrayList 差,而 LinkedList 使用
双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时
只需要记录本项的前后项即可,所以插入速度较快。
8 设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。
写出程序。
以下程序使用内部类实现线程,对 j 增减的时候没有考虑顺序问题。
public class ThreadTest1{
private int j;
public static void main(String args[]){
ThreadTest1 tt=new ThreadTest1();
Inc inc=tt.new Inc();
Dec dec=tt.new Dec();
for(int i=0;i<2;i++){
Thread t=new Thread(inc);
t.start();
t=new Thread(dec);
t.start();
}
}
private synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc:"+j);
}
private synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec:"+j);
}
class Inc implements Runnable{
public void run(){
for(int i=0;i<100;i++){
inc();
}
}
}
class Dec implements Runnable{
public void run(){
for(int i=0;i<100;i++){
dec();
}
}
}
}

阿里巴巴面试题

在这里插入图片描述

1、把QQ用户分成三个年龄段:小于16岁,16到18岁,大于18岁,从三个年龄段中任意选取4人参加用户调查,请问有多少种选法?( )
A. 12
B. 14
C. 15
D. 18
参考答案:A
2、
1.#include
2.class Base
3.{
4.public:
5.virtual void foo(){printf(“call Base::foo().\n”);}
6.void bar(){printf(“call Base::Derive().\n”);foo();}
7.};
8.class Derive:public Base
9.{
10.public:
11.void foo(){printf(“call Derive::foo().\n”);}
12.void bar(){printf(“call Derive::Derive().\n”);foo();}
13.};
14.int main()
15.{
16.Base * ptr = new Derive();
17.if(ptr !=NULL) ptr->bar();
18.return 0;
19.}

A. call Derive::bar().
call Derive::foo().
B. call Derive::bar().
call Base::foo().
C. call Base::bar().
call Derive::foo().
D. call Base::bar().
call Base::foo().
参考答案:C
备注:题目代码有误,正确代码如下:
1.#include
2.class Base
3.{
4.public:
5.virtual void foo(){printf("call Base::foo().\n");}
6.void bar(){printf("call Base::bar().\n");foo();}
7.};
8.class Derive:public Base
9.{
10.public:
11.void foo(){printf("call Derive::foo().\n");}
12.void bar(){printf("call Derive::bar().\n");foo();}
13.};
14.int main()
15.{
16.Base * ptr = new Derive();
17.if(ptr !=NULL) ptr->bar();
18.return 0;
19.}

字节跳动面试题

在这里插入图片描述

目录
一、字节跳动技术一面(算法)
1.Java 的 16 进制与字符串的相互转换函数
2.JAVA 时间格式化处理
3.将毫秒转化为日期
4.文本的倒序输出
5.判断一个数字是奇数还是偶数
6.用Hibernate 实现分页
7.35 选 7 彩票程序
8.获取 GMT8 时间
9.中文乱码转换
10.小标签
11.Big5 字与 Unicode 的互换
12.取得服务器当前的各种具体时间
13.用半角的特殊符号代替全角的特殊符号
14.数组和数组之间的转换代码
15.从资源文件里读取值的类
16.一个随机类
17.计算传入值是否星期六
18.转换文件大小

二、字节跳动技术二面
1.List和Set比较,各自的子类比较
2.HashMap和ConcurrentHashMap的区别
3.HashTable和ConcurrentHashMap的区别
4.String,StringBuffer和StringBuilder的区别
5.wait和sleep的区别

腾讯面试题

在这里插入图片描述

1 计算 a^b << 2 (运算符优先级问题)
2 根据先序中序求后序
3 a[3][4]哪个不能表示 a[1][1]: *(&a[0][0]) ((a+1)+1) *(&a[1]+1)
*(&a[0][0]+4)
4 for(int i...)
for(int j...)
printf(i,j);
printf(j)
会出现什么问题
5 for(i=0;i<10;++i,sum+=i);的运行结果
6 10 个数顺序插入查找二叉树,元素 62 的比较次数
7 10 个数放入模 10hash 链表,最大长度是多少
8 fun((exp1,exp2),(exp3,exp4,exp5))有几个实参
9 希尔 冒泡 快速 插入 哪个平均速度最快
10 二分查找是 顺序存储 链存储 按 value 有序中的哪些
11 顺序查找的平均时间
12 *p=NULL *p=new char[100] sizeof(p)各为多少
13 频繁的插入删除操作使用什么结构比较合适,链表还是数组
14 enum 的声明方式

网易面试题

在这里插入图片描述

1.写出对“知之者不如好之者,好之者不如乐之者”的理解。
2.用中文写出尽可能多的中文语句,要求包含有“都”的意思(all、both 之意),
但不能有“都”字
3.new/delete 和 malloc/free 的区别,并说说你在什么情况下会自另行建立自
己的内存分配机制。
4.求极限 lim(x-[x]),x 趋于-3。
5.比较两个电路的可靠性。
6.编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出
所有可能的正整数序列。
7.有两个字符串 str1 和 str2,写一个函数实现在 str1 中查找 str2 的初始位置。
要求不区分大小写。
8.在字符串 S 中寻找最长的字符串 x,条件是 x 存在于 S 中。即是如:
abcabcdcd 中的 abc。
9.求 Fibonacci 数列中第 k 个与前面所有数互质的数(除前面两个数 1,1 )。
10.有 100 个真币和一个假币,只知道真币与假币不等重,要求只称两次,得
出是真币重还是假币重。

redis面试题

在这里插入图片描述

1、什么是 Redis?简述它的优缺点?
Redis 的全称是:Remote Dictionary.Server,本质上是一个 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 适合的场景主要局限在较小数据量的高性能操作和运算上。
2、Redis 与 memcached 相比有哪些优势?
1.memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰富的数据类型
2.redis 的速度比 memcached 快很多 redis 的速度比 memcached 快很多
3.redis 可以持久化其数据 redis 可以持久化其数据
3、Redis 支持哪几种数据类型?
String、List、Set、Sorted Set、hashes
4、Redis 主要消耗什么物理资源?
内存。
5、Redis 有哪几种数据淘汰策略?
1.noeviction:返回错误当内存限制达到,并且客户端尝试执行会让更多内存被使用的命令。
2.allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。
3.volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存
放。
4.allkeys-random: 回收随机的键使得新添加的数据有空间存放。
5.volatile-random: 回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。
6.volatile-ttl: 回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间
存放。
6、Redis 官方为什么不提供 Windows 版本?
因为目前 Linux 版本已经相当稳定,而且用户量很大,无需开发 windows 版本,反而会带来兼容性等问
题。
7、一个字符串类型的值能存储最大容量是多少?
512M

后面还有关于 springMVC,微服务,Dubbo,netty,网络,zookeeper,kafka,rabbitMQ,readis缓存,数据库,设计模式,就不在这里一一给大家展示了,

在这里插入图片描述

需要这些PDF面试资料的读者朋友可以帮忙点赞后,私信【面试】就可以了(一定要记得关注我,不然没办法回复陌生人私信)。希望大家都能够拿到一个心怡的offer。

你可能感兴趣的:(程序员男朋友晚上越来越晚回家,问他也不回答,原来是在公司看这个!)