昨天下班前,一个老同学给我发微信,说自己去华为面试了,现在结果已出,问我的建议。
我都懵了,从来没想过专科生可以进大厂面试。他说从来没介意自己学历,找工作的时候他也发现,招聘方很多对学历要求并没有卡得很牢,他们更看重掌握的技术还有持续学习并去行动的能力。

老同学告诉我,面试过程,先是机试,卡点交卷,题不是太难,只是平时不做题,有些生疏。然后是性格测试。他提前在网上已经大概看了一遍需要避坑的地方,把自己打造一个性格正常的人就行。接着有人给他打电话,具体介绍工作情况,问他是否理解等等。然后有视频会议,和他聊了聊,谈薪也在这块。之后还经历了独立面试,面试官问到项目经历,需要讲一讲具体流程。这个要看面试官是否有经验了,普通人问的不深,比较有经验的可能会问的多一些。
最后提到岗位签的是华为惠通,但工作对接和职级晋升都是华为的。老同学告诉我,高级员工在华为,低级员工在华为外包,也就是惠通。

这个我也查过,华为对外包类(含od、odc、慧通、中软、软通…)有统一的定价:一万上下,会做背调,个人薪资上调不得超过20%,即使本来就超过一万多的人,进来华为也只会给一万左右的收入(技术岗会高一点点)。
可以说, 慧通算是外包也不是外包,是全资外包而已,干的还是外包的事:不那么重要的人去做一些技术难度低的流水线一般的事。外华为是分级的14级以下大部分都是外包。如果有水平就不要去外包,如果水平一般的话,那就不要介意外包,毕竟大厂的外包确实比一些公司的薪资福利香的多。暂时先去外包干着,有合适的机会再跳槽。
提到华为,不得不分享一下它的这道高频面试题。
题目:关于CAS(乐观锁)的原理解析
CAS就是是JDK提供的非阻塞原子性操作,通过硬件保证了比较-更新操作的原子性。它的主要原理如下:
CAS有三个操作数
内存值v
旧的预期值A要修改的新值B
当多个线程尝试使用CAS同时更新一个变量的时候,只有一个能够更新成功。那就是当我们的内存值V和旧的预期值A相等的情况下,才能将内存值V修改成B!然后失败的线程不会挂起,而是被告知失败,可以继续尝试(自旋)或者什么都不做!
尝试重试
我们可以假设有两个线程,一个线程1,一个线程2,同时对我们的内存值进行自增!我们的内存值刚开始是0,旧的预期值也是0。
这个时候线程1进来了,由于我们的内存值和旧的预期值相等,所以更新我们的内存值为要修改的新值1
当线程1结束之后,线程2进来了,要对我们的内存值进行修改。但是发现我们的内存A(此时为1)和我们的旧的预期值不相等(此时为0)不相等,所以不能将内存值更新为我们的预期值(预期值为2),所以只能进行将旧的预期值更新为内存值(此时旧的预期值 == 内存值),并告知下一次再试试!
当我们的线程2重试更新内存值,此时内存值(此时为1)与我们的旧的预期值(此时为1)相等,所以可以将我们的内存值更新为我们的预期值(此时为2)。
所以,哪怕没有加锁,我们也能实现线程安全。
什么都不做
同样的,我们举例有两个线程,一个线程1,一个线程2;我们两个线程都要对内存进行更新为10。
我们假设线程1先进来,此时内存值与我们的旧的预期值都为0,所以可以更新,将我们要修改的新值10赋值给了内存值,完成了更新
当线程1完成之后,线程2进来要对我们的内存值进行修改为10,但是发现内存值与旧的预期值不相同(此时一个为10,一个为0),所以只能将旧的预期值更新为内存值,同时被告知了下次不用重试了。(因为我们的目的是将内存值更新为10,显然我们的目的已经完成了)
原子变量类简单分析
我们在开头也提到了,在我们JUC下的原子变量类也是使用CAS来保证操作的原子性。而我们的具体原子变量类有以下这些:


image-20240304231412552我们以AtomicInteger为例,找一个其中自增的方法分析一下:
//var1 是this指针
//var2 是地址偏移量
//var4 是自增的数值,是自增1还是自增N
public final int getAndAddInt(Object var1, long var2, int var4) {
int var5;
do {
//获取我们的的期望值赋值给var5
var5 = this.getIntVolatile(var1, var2);
//调用了Unsafe下面的另一个方法,是一个native方法
//如果期望值var5与内存值var2相等的话,更新内存值为var5+var4,否则更新期望值为期望值为内存值
} while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
return var5;
}
compareAndSwapInt方法是我们的调用native方法
compareAndSwapInt方法是我们的调用native方法
// 第一和第二个参数代表对象的实例以及地址,第三个参数代表期望值,第四个参数代表更新值
public final native boolean compareAndSwapObject(Object var1, long var2, Object var4, Object var5);
public final native boolean compareAndSwapInt(Object var1, long var2, int var4, int var5);
public final native boolean compareAndSwapLong(Object var1, long var2, long var4, long var6);
它是由我们的底层c代码调用汇编使用的,最后生成出一条CPU指令cmpxchg,完成操作。这也就为啥CAS是原子性的,因为它是一条CPU指令,不会被打断。这个指令在我们早期的硬件厂商就在芯片大量使用了,比如intel。
插播福利:
这里也给小伙伴们发一份福利,精心准备的【大厂面试题20多个技术点!】涉及
Linux、redis、k8s、Docker、golang、Jenkins、prometheus、DevOps、MongoDB、shell、dubbo、nginx、Kafka、ansible、消息队列、网络安全……一次打包全部带走。保证你在跳槽和汇报工作的时候如鱼得水。


免费领取预计24小时后关闭!速进!

Docker面试题:
1、什么是Docker?
2、什么是Docker镜像?
3、什么是Docker容器?
4、Docker容器有几种状态?
5、DockerFile中最常见的指定是什么?
6、DockerFile中的命令COPY和ADD命令有什么区别?
7、Docker的常用命令?
8、容器与主机之间的数据拷贝命令?
9、启动nginx容器(随机端口映射),并挂载本地文件目录到容器html的命令?
10、解释-下dockerfile的ONBUILD指令?
11、什么是docker Swarm?
12、如何在生产中监控docker?
13、Docker如何在非Linux系统中运行容器?
14、如何批量清理临时镜像文件?
15、如何查看镜像支持的环境变量?
16、本地的镜像文件都存放在哪里?
17、构建docker镜像应该遵循哪些原则?
18、容器退出后,通过docker ps命令查看不到,数据会丢失么?
19、如何停止所有正在运行的容器?
20、如何清理批量后台停止容器?
21、如何临时退出一个正在交互的容器的终端,而不终止它?
22、很多应用容器都是默认后台运行的,怎么查看他们的输出和日志信息?
23、使用docker port命令映射容器的端口时,系统报错Error:No public port ’80’published for …,是什么意思?
24、可以在一个容器中同时运行多个应用进程吗?
25、如何控制容器占用系统资源(CPU,内存)的份额?
26、仓库(Repository)、注册服务器(Registry)、注册 索引(Index)有何关系?
27、Docker的配置文件放在那里。如何修改配置?
28、如何更改docker的默认存储设置?
29、Docker于Vagrant有何不同?
30、docker与LXC(Linux Container)有何不同?
……
Nginx面试题
1、请解释—下什么是Nginx?
2、请列举Nginx的一些特性。
3、请列举Nginx和Apache 之间的不同点。
4、请解释Nginx如何处理HTTP请求。
5、在Nginx中,如何使用未定义的服务器名称来阻止处理请求?
6、使用”反向代理服务器”的优点是什么?
7、请列举Nginx服务器的最佳用途。
8、请解释Ngjinx服务器上的Master和Worker进程分别是什么?
9、请解释你如何通过不同于80的端口开启Nginx?
10、请解释是否有可能将Nginx的错误替换为502错误、5 03
11、在Nginx中,解释如何在URL中保留双斜线
12、请解释ngx_http_upstream_module的作用是什么
13、请解释什么是C10K问题
14、请陈述stub status和sub filter指令的作用是什么
15、解释Nginx是否支持将请求压缩到上游
16、解释如何在Nginx中获得当前的时间
17、用Nginx服务器解释-s的目的是什么
18、解释如何在Nqinx服务器上添加模块
19、为什么要用Nginx?
20、为什么Nginx性能这么高?
21、Nginx怎么处理请求的?
22、什么是正向代理和反向代理?
23、使用”反向代理服务器的优点是什么?
24、Nginx的优缺点?
25、Nginx应用场景?
26、Nginx目录结构有哪些?
27、Nginx配置文件nginx.conf有哪些属性模块?
28、Nginx静态资源?
29、如何用Nginx解决前端跨域问题?
30、Nginx虚拟主机怎么配置?
……
ansible面试题
- 简述Ansible及其优势?
- 简述Ansible工作机制及其特性?
- 简述Ansible中如何保存敏感数据?
- 简述Ansible适合的场景?
- 简述Ansible Inventory?
- 简述Ansible配置文件优先级?
- 简述Ansible ad-hoc命令?
- 简述Ansible ad-hoc和playbook的区别?
- 简述Ansible变量?
- 简述Ansible如何实现任务的循环?
- 简述Ansible hanlder?
- 简述Ansible Block?
- 简述Ansible如何处理play错误的?
- 简述Ansible角色?
- 简述Ansible Galaxy?
- 简述Ansible如何控制任务的并行执行?
……
shell脚本面试题
Q:1 Shel脚本是什么、它是必需的吗?
Q:2 什么是默认登录shell,如何改变指定用户的登录shell
Q:3 可以在shell脚本中使用哪些类型的变量?
Q:4 如何将标准输出和错误输出同时重定向到同一位置?
Q:5 shell脚本中“if”语法如何嵌套?
Q:6 shell脚本中“$?”标记的用途是什么?
Q:7 在shell脚本中如何比较两个数字?
Q:8 shell脚本中break命令的作用?
Q:9 shell脚本中continue命令的作用?
Q:10 告诉我shell脚本中Case语句的语法 ?
Q:11 shell脚本中while循环语法 ?
Q:12 如何使脚本可执行 ?
Q:13“#!/bin/bash”的作用?
Q:14 shell脚本中for循环语法 ?
Q:15 如何调试shel脚本 ?
Q:16 shell脚本如何比较字符串
Q:17 Bourne shell(bash) 中有哪些特殊的变量 ?
Q:18 在shell脚本中,如何测试文件?
Q:19 在shell脚本中,如何写入注释 ?
Q:20 如何让 shel 就脚本得到来自终端的输入?
Q:21 如何取消变量或取消变量赋值 ?
Q:22 如何执行算术运算 ?
Q:23 do-while语句的基本格式 ?
Q:24 在shel脚本如何定义函数呢 ?
Q:25 获取随机字符串或数字
Q:26 定义一个颜色输出字符串函数
Q:27 批量创建用户
Q:28 检查软件包是否安装
Q:29 检查服务状态
Q:30 检查主机存活状态
……
jenkins面试题
1.jenkins是什么
2.为什么使用jenkins
3.CI/CD是什么
4.集中常见的CI工具
5.什么是Jenkins pipeline
6.为什么在jenkins中使用管道
7.什么是jenkinsfile?为什么使用jenkinsfile8.什么是Blue Ocean
9.如何在jenkins中备份和复制文件
10.jenkins的优势是什么
11.Jenkins主要整合了两个组成部分?
12.Jenkins中一些由用的插件
13、jenkins你都用了哪些插件?
14、jenkins怎么备份恢复
15、Maven是什么?Jenkins是什么?
16、Hudson 和 Jenkins 有什么区别?
17、在Jenkins中持续集成是什么?
18、为什么将Jenkins与Selenium一起使用?
19、CICD管道是什么?
20、在Jenkins中构建管道是什么?
21、Jenkins Pipeline是什么?
22、DSLJenkins是什么?
23、持续集成和部署是什么?
24、用于配置和配置的工具是什么?
25、Maven,Ant和Jenkins有什么区别?
26、Jenkins支持哪些SCM工具?
27、如何在Jenkins中计划构建?
28、为什么在Jenkins中使用管道?
29、Jenkinsfile是什么?
30、如何在Jenkins中创建多分支管道?
……
由于篇幅限制不再一一进行展示
免费领取预计24小时后关闭!速进!

根据提示 免费前
时效有限,前100名免费领取
本文链接:https://www.yunweipai.com/44840.html
网友评论comments