阿里本地生活4面

本文涵盖了一系列技术面试题目,涉及项目经验、多线程、Nginx、Redis、SpringCloud等技术要点,还包括编程题如二进制位操作、快速排序算法实现、字符串转整数等,适合准备面试的技术人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一面

1、谈谈最近的一个项目。说一说如何架构的?
2、说一说你在这个项目的核心工作,然后一系列问题。如何把你的项目抽象为多个领域?
3、多线程的理解,线程池如何设置合理的线程数?为什么要这样设置?
4、nginx的理解,nginx反向和正向代理
5、redis是单线程的说说你如何理解单线程但又是高并发。说说redis fork进程
6、说一说SpringCloud是如何把负载均衡和熔断整合的?
7、多方接口不一样你们是如何处理的?
8、说一说雪花算法。
9、如何提高mysql效率,如何设置合理的索引?
10、为什么会有多线程问题?jmm,cpu高速缓存,io总线
11、解决多线程的方案,volatile,synchronized,volatile应用场景

三面

1、你最近一个项目核心模块
2、你处于什么地位
3、对项目有什么改进

四面

1、讲一讲项目的背景、架构
2、项目怎么才算合格,验收标准
3、SPI
4、DDD
5、反射原理
6、为何选用clickhouse,如何选型

二面(编程题)

/*
1)如下一段神奇的代码实现的功能是 A
int miracle(unsigned int n)
{
int m=n==0 ? 0:1;
while (n=(n&(n-1)))
{
m++;
}
return m;
}

A. n的二进制表示中”0″的个数
B. n的二进制表示的倒序值
C. n的二进制表示中”1″的个数
D. 一个均匀的哈希函数
*/

// 2) 请在空格处填入语句完成快速排序(Quick Sort)函数;
void quickSort(int s[], int l, int r)
{
if (l< r)
{
int i = l, j = r, x = s[l];
while (i < j)
{
while(i < j && s[j]>= x)
_____ j–____________ ; [此处填空]
if(i < j)
s[i++] = s[j];
while(i < j && s[i]< x)
______ i++___________ ; [此处填空]
if(i < j)
s[j–] = s[i];
}
s[i] = x;
_____ quickSort(s,l,i-1)___; [此处填空]
________ quickSort(s,i+1,r)
; [此处填空]
}
}

/*
3) 编码题,Convert函数的目的是将一个字符串转换为整数,
转换规则为:如果字符串是0到9的英文单词,则转换为相应的整数,
否则,直接将字符串转换为整数,
如”one”会转换化1,”123”会转换为123, “abc”转换为后为0。请找出该函数中的错误:
*/
// 请注意: 写出错误的问题点即可,无需修改代码
int Convert(String number){
String[] numbers = {“zero”, “one”, “two”, “three”, “four”, “five”, “six”, “seven”, “eight”, “nine”};
for(int i=0;i<numbers.length;i++){
//== 改成equals
if(numbers[i] == number.toLowerCase()){
break;
}
}
if(i>10){
i = Integer.parseInt(number);
}
return i;
}

/*
4) 将一个数学表达式的二叉树输出为前缀表达式
已知条件:
(1) 已经生成了二叉树,树的结点类为:
class Node{
public String value;
public Node left;
public Node right;
public Node parent;
}
(2) 转换函数为:
String toPrefixExpression(Node root);
其中参数root为二叉树的根结点。请编写toPrefixExpression函数, 返回前缀表达式字符串。
例 :
运算表达式
a+b*c-d

二叉树
-
∕ \

  • d

    a *

    b c

返回的前缀表达式
-,+,a,*,b,c,d
*/

String toPrefixExpression(Node root){
// 请补充完整代码
String result = “”;
String left = “”;
String right = “”;
if(root.left != null ){
left = toPrefixExpression(root.left);
}
if(root.right != null){
right = toPrefixExpression(root.right);
}

result = left + root.value + right;

return result;

}

// 5) 编码题,题目要求:写程序制造 OutOfMemory (内存溢出) 异常。
// 加分项:
// 1. 通过 JVM 堆相关的参数控制内存区域大小
java -jar xmx: xms: matespace:等
// 2. 尽可能多地模拟 JVM 各个内存区域溢出场景 (Heap, MetaSpace 等)

byte[] byets = new byte[1];
List list = new ArrayList();
for(;;){
	list.add(byets);
}

String str = "很大的字符串";
List list = new ArrayList();
for(;;){
	list.add(str);
}

// String a(){
// a();
// }

/*
6)脚本
一台服务器上运行着 80 个 tomcat 进程,现在需要找到这些进程的进程号后杀掉这些进程
1) 可能会用到哪些 linux 命令?
ps -aux|grep tomcat
awk
kill $pid
2) 请试着写一段 shell 脚本将所有 tomcat 进程杀掉?
pids=ps -aux|grep tomcat | awk '$2'
for [ pid in $pids ]
eacho "杀掉tomcat进程pid=kill -9 $pid
end

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

年迈程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值