admin 管理员组

文章数量: 887021

【面经】2024春招-后台研发工程师1(3个问题,移动&TW等)

主要是面试前准备的相关材料与网络上的面经,个人不透露面试题目哈~

文章目录

      • 岗位与面经
      • 基础1:数据库 & 网络(3个问题)
      • 基础2:系统 & 语法
      • 模板3:算法 & 项目(移动与TW)

场景:同时连着三场面试,八股复习不过来。

操作:每个知识点只总结最重要的3个面试题,记忆时建模,回答时适当引导深挖,然后把三个题回答好。

原理:本次的面经决定以缩减内容的方式进行迭代(上一次是扩充)

岗位与面经

在线营销服务中心-中国移动通信有限公司在线营销服务中心
开发工程师(软件)-杭州
权益平台中心开发工程师(软件)
岗位描述
1.负责全网权益平台支撑31省权益调用的开发工作,保障31省和各专业公司权益调用正常。
2.负责支撑各省权益运营功能的开发,包括支撑权益引入、封装、调用、结算对账等流程的优化和合规性提升。
3.负责支撑权益类业务数据汇聚至中心数据平台,并负责开发常规类权益业务报表、权益分析类需求开发。
4.负责开展全网权益平台关键核心模块的能力开发及性能优化提升。
5.负责权益超市、领取系统的会员体系、权益金、混合支付等功能开发,负责权益风控调用等核心需求研发。
6.负责根据权益业务的快速发展,利用高并发、大流量技术完成权益系统架构优化和技术升级,完成技术类知识梳理与沉淀,完善技术研发流程。
7.负责全网权益平台底层权益通用能力规划设计及开发建设。
任职条件
1.教育:大学本科及以上学历,计算机相关专业。
2.技能:精通JAVA编程语言, 熟练掌握IO、多线程、分布式缓存、消息、JVM原理等,具备性能优化经验。熟练掌握SpringBoot/MyBatis或其他主流JAVA框架原理及机制,熟悉常见设计模式,具备良好编码风格。熟练掌握MySQL,及常见NoSQL存储,如:Redis、HBase等。熟悉Linux下常用命令,具备一定的运维能力
3.其他:CET-4级及以上或同等能力证书。

thoughtworks-思特沃克
2024校招-软件开发工程师
1.软件开发工程师与业务分析师和质量分析师、设计师、项目经理等合作设计软件解决方案,为我们的客户带来有意义的改变。他们仔细聆听以了解业务问题的上下文,并编写干净且迭代的代码以提供强大的最终结果。通过平衡强烈的意见和寻找正确答案的意愿,软件开发人员为技术带来完整性,确保所有声音都能被听到。
2.我们的初级顾问的职业生涯从 Thoughtworks University 开始,为期 3 - 4 周的沉浸式培训。需要指出的是,我们考虑各行各业的技术人才。无论你是一个计算机科学专业的专业经验不足一年,还是一个编码训练营的毕业生,还是一个正在努力成为软件开发人员的职业改变者,你都有机会在我们充满激情的技术专家社区中成长。

岗位职责
你将使用 TDD、SOLID 原则、OO 设计和成对编程等实践来编写干净的、迭代的代码
你将使用持续交付实践来提高软件交付速度
你们将在以产品为中心的协作团队中工作,以建立创新的客户体验,并为各种客户创造有意义的改变
学习、消化并应用我们的技术雷达的最新技术思维来解决客户的问题
为所有行业的客户解决各种挑战,同时与来自不同背景的新队友合作

我们的要求
- 技术技能
计算机相关专业
了解分析、设计、编码和 OO 概念
至少掌握一门语言(如C/C++, Java, C#, Javascript, Ruby等)
了解 WEB 应用开发,及对应的WEB开发框架以及常用第三方类库者优先;掌握 Git 等 SCM 工具,拥有并使用 Github 账户者优先
做过项目、参加过比赛、自己做过小应用者优先
- 综合技能
学习能力强,动手能力强,主动学习,有好奇心,愿意探求技术背后的原理
善于沟通,能够成为一名积极,乐于分享的团队成员
喜欢全球化的工作环境、拥有较强的英语表达能力和交流意愿
你将在重视透明度、开放性、反馈和变化的协作、扁平化环境中茁壮成长
你对学习和分享知识有热情,并渴望为业务问题创造有意义的解决方案
敢于从不同视角去挑战工作中的不确定性

其它你可以了解的
学习与发展
在 Thoughtworks 没有一刀切的职业道路,我们每个人的职业发展完全取决于我们个人。同时,我们也会平衡自主成长与我们的培育型文化。因而,每位员工的发展都伴随着互动工具、众多发展计划以及愿意帮助他人成长的同事的支持。我们认为互相帮助是我们最好的价值,这是我们的员工在其职业生涯中被赋予的权力。


云计算后台研发工程师
工作职责
1.从事公司内部平台的整体架构设计,开发,优化以及运营工作;
2.使用业内先进的技术,打造可靠并且高性能的内部支撑服务,包括监控,日志,内部中间件产品研发等工作。
任职要求
1.统招本科生及以上学历,计算机,通信相关专业者优先;
2.有扎实的编程基础,优秀的设计能力和代码质量;
3.深刻理解计算机原理,熟悉常用的数据结构和算法;
4.熟悉 Mysql,Redis 等常用中间件;
5.认真负责,有强目标感,有良好的团队沟通和协作能力;
6.有良好的知识广度和深度,开源贡献者优先。


引用

行笔至此不由感慨万千,犹记得刚做出决定时身边没有任何一个人支持,只是在有所小成时得到众人称赞,大概人生就是这样,有些路是得自己默默一个人走的。

我只是记录个人的转码历程,要是你和当初的我一样迷茫,想问我哪种路线适不适合有没有更优解,我只能说我知道这个问题对我的答案,而你的答案得你自己去探寻,我最由衷的建议就是树立目标制定计划任然后不断试错不断改正不断试错不断完善不断试错不断精进,还是那句话:难道向上攀登的路不比登上山峰更令人热血沸腾吗

后端面试整体结构:
1、面经:多刷牛客,找对应部门的。
2、实习:用述职答辩时候的内容,模式化一下。拓展可以用一些职场技能的总结。
3、项目:可以补充一些学校里项目的总结思考,两个视角维度的
4、八股:秋招面wxg时候的八股,主要是redis&mysql 加上 系统 & 网络,补充一些设计模式&java语法。
5、算法:笔试算法补题,力扣专项适当强化一下知识点。

表达上注意的:
1、不要紧张,就当聊聊天,主观打分只要有内容就比交白卷要好类似于语文作文,写的自信一点就好。
2、结构化表达:议论文写法,逻辑清洗,以下xx点。
3、例子:忘记了,或者没话题,引申补充,想到什么讲什么,多凑一些例子

八股:计网(http)+数据结构(语法)+操作系统(linux)+数据库(mysql, redis)+算法题

岗位:场景,后端,安全(sql注入), 前端(js)

  • 【Golang开发面经】

基础1:数据库 & 网络(3个问题)

网络第一版。

数据的存储与查询:
+ 查询:执行一条 select 语句,期间发生了什么?
+ 存储:MySQL 一行记录是怎么存储的?

数据库:
1、效率:数据结构(索引,redis)
2、准确性:并发的时候准确(事务,锁),长期准确(过期,更新策略,缓存,雪崩,击穿)
3、稳定性:持久化,数据备份恢复。

1、重点

知道TCP连接吧?三次握手的目的是什么?

那四次挥手有了解过吗?为什么是四次?

什么是粘包和拆包?为什么会出现?

怎么解决?

什么是事务?

那 redis 支持事务吗?(redis事务机制可以保证一致性和隔离性,无法保证原子性,持久性。Redis可通过MULTIEXEC来实现事务的4个特性 。 参考)

2、秋招重点网络(3个问题)

TCP

  • 1、TCP三次握手,四次挥手。 为什么不是2次。

  • 2、TCP和UDP的区别(可靠性,应用场景,2点)

    • 1、可靠性:不用建连接,尽最大努力交付,不保证可靠交付数据,只管发。即使网络非常拥堵了,也不会影响 UDP 的发送速率。可能丢包和乱序。 支持一对一、一对多、多对多。UDP有消息保护边界,不会发生粘包拆包问题(TCP需要将每个包封装成固定长度)
    • 2、应用场景:TCP用于文件传输FTP,HTTP等。 UDP用于DNS,视频通话,电话会议等。因为实时性要求很高,掉帧也不影响。当然UDP可以保证可靠,比如应用层超时重传。
  • 3、TCP如何保证传输可靠 (滑动窗口,流量控制,拥塞控制)

HTTP

  • 1、说一说 HTTP 请求的过程,键入网址到网页显示,期间发生了什么?
  • 2、HTTP/HTTPS 什么区别,安全?SSL/TLS 怎么工作的, (和RPC的区别,效率)
  • 3、GET 和 POST 区别,状态码有哪些?

其他:

  • 1、TCP/IP 网络模型有哪几层
  • 2、待定
  • 3、待定
TCP 三次握手的过程
TCP 和 UDP 的区别
TCP 四次挥手的过程
说一说 HTTP 请求的过程(从输入域名到浏览器看见页面经历了什么过程)
由下往上说出 OSI 七层模型、TCP/IP 五层模型以及各层的代表协议
TCP 怎么保证可靠传输
HTTP/HTTPS 什么区别?HTTP 特性有哪些
HTTP 响应报文的状态码有哪些
详细介绍下 TCP 滑动窗口(累积确认、流量控制、拥塞控制)
HTTPS 从客户端到服务器端全流程,包括 CA 验证体系
TCP 为什么是三次握手?
GET 和 POST 区别
Session 和 Cookie
HTTP 报文格式
HTTP1.0/1.1/2.0/3.0 区别
HTTPS 中的 SSL/TLS 怎么工作的

什么是 TCP 粘包和拆包问题?怎么解决?
UDP有消息保护边界,不会发生粘包拆包问题
因为TCP是面向流,没有边界,而操作系统在发送TCP数据时,会通过缓冲区来进行优化,例如缓冲区为1024个字节大小。
对于粘包和拆包问题,常见的解决方案有四种:
- 发送端将每个包都封装成固定的长度,比如100字节大小。如果不足100字节可通过补0或空等进行填充到指定长度;
- 发送端在每个包的末尾使用固定的分隔符,例如\r\n。如果发生拆包需等待多个包发送过来之后再找到其中的\r\n进行合并;例如,FTP协议;
- 将消息分为头部和消息体,头部中保存整个消息的长度,只有读取到足够长度的消息之后才算是读到了一个完整的消息;
- 通过自定义协议进行粘包和拆包的处理。




3、秋招重点DB(3个问题)

MySQL

  • 1、事务的特性,有哪些隔离级别,分别解决什么问题?底层怎么实现的
    • (ACID 特性)(丢失更新、脏读、不可重复读、幻读)详细说说 MVCC 的原理
  • 2、有哪些索引? 什么时候有效,什么时候无效,底层是什么?
    • 聚集索引 (主键索引) 和非聚集索引 (辅助索引/普通索引) 的区别
    • 怎么去做索引优化,联合索引的最左匹配原则
    • B/B+ 树原理与区别,什么是红黑树?红黑树与平衡二叉树
  • 3、有哪些日志? 在怎么做主备,容灾。
    • MVCC版本链(undo log)
    • 数据同步机制 & 主从复制 (binlog)
    • 日志&数据恢复(redo log、缓冲池,两阶段提交)

Redis

  • 1、缓存的设计与使用 ? 缓存雪崩,击穿,穿透, 缓存过期什么策略,数据持久化
  • 2、有哪些数据结构?ZSet 的原理,string类底层是怎么实现的
  • 3、怎么做分布式和容灾?主从复制,主从故障转移,并发竞争与分布式锁

其他:

  • 1、数据库范式,参考
  • 2、待定
  • 3、待定
MySQL 索引底层结构(B/B+ 树原理与区别)
有哪些隔离级别,分别解决什么问题(丢失更新、脏读、不可重复读、幻读)
说一下 MySQL 的事务(ACID 特性)
四种隔离级别是怎么实现的(详细说说 MVCC 的原理)
MySQL 聚集索引 (主键索引) 和非聚集索引 (辅助索引/普通索引) 的区别
还知道有什么存储引擎么(MyISAM),这些存储引擎的区别
联合索引的最左匹配原则:为什么得最左匹配,不按照这个来为什么失效?
什么是慢 SQL (慢查询)?如何分析 (Explain、Profiling)
MySQL 都有哪些类型的索引
建索引的时候有什么需要遵循什么原则?(哪些字段适合建立索引)
MySQL 解决幻读了吗,是如何解决的
索引在哪些情况下会失效
什么是红黑树?红黑树与平衡二叉树、B/B+ 树的区别
讲讲回表查询和覆盖索引,为什么需要覆盖索引 ,可以使用覆盖索引优化的场景
MySQL 主从复制原理
怎么提高 MySQL 读写效率(SQL 优化)
MySQL 索引为什么要用 B+ 树?为什么不用红黑树?为什么不用跳表?
数据库的悲观锁和乐观锁怎么实现
索引的优点和缺点(为什么要用索引)
binlog、redolog、undolog 的区别和作用


如何解决缓存和数据库一致性问题
Redis 数据类型(对象)有哪些
Redis ZSet 的原理和使用场景(延迟队列)
Redis 的两种持久化方式(RDB 和 AOF)以及优缺点
Redis 缓存穿透问题及其解决方案
Redis 有什么作用?为什么要用 Redis
Redis 缓存雪崩问题及其解决方案
Redis 的底层数据结构有哪些
Redis 缓存击穿问题及其解决方案
Redis 如何判断键是否过期?过期键的删除策略有哪些
Redis 是单线程还是多线程?Redis 6.0 之后为何又引入了多线程
Redis 主从复制
Redis 集群
什么是一致性哈希,Redis 集群为什么不用一致性哈希


数据库三范式

MySQL引擎选择
如果表中绝大多数都只是读查询,可以考虑 MyISAM,如果写操作很频繁,请使用 InnoDB
系统奔溃后,MyISAM 恢复起来更困难,能否接受,不能接受就选 InnoDB;


基础2:系统 & 语法

操作系统,五大结构:

1、 进程管理(进程与线程,进程间通信,进程调度,多线程同步、死锁、悲观锁和乐观锁)+ 网络系统( I/O 多路复用、零拷贝、Reactor)

2、内存(虚拟内存,malloc),文件(文件系统),设备(键盘输入)

3、计算机组成(硬件系统),Linux(网络性能,日志PV,UV)

1、重点

线程和进程有什么区别?各自有什么优缺点?

进程之间如何进行通信?

什么是信号,信号量是如何实现的?

讲讲Go里面的GMP模型?

Go的GMP模型

map用过吧?怎么对map进行排序?

讲讲map底层?为什么是无序的?

HashMap 的底层结构和原理

什么是多态?运行时多态和编译时多态?重载和重写的区别

2、Java重点

java基础篇

  • 1、JDK、JRE、JVM三者区别和联系 ,可以参考 ,JVM内存区域和垃圾回收,JVM一个类的加载过程
  • 2、进程,线程,锁的运用,线程有哪几种状态。 如何进行并发编程
  • 3、基本数据类型,值传递,序列化。

java框架篇

  • 1、Spring、Spring MVC、Spring Boot、Spring Cloud的区别, 参考

  • 2、Spring核心概念,IOC(控制反转)容器和AOP(面向切面编程)

    • Spring有三大核心思想,分别是控制反转(IOC,Inversion Of Controller),依赖注入(DI,Dependency Injection)和面向切面编程(AOP,Aspect Oriented Programming)。

    • 控制反转(IOC,Inversion Of Controller)

      • 控制反转不是什么技术,而是一种设计思想。在Java开发中,IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。
      • 传统正转: 控制有反转,当然也就有原来的正转。正转就是说当你需要用到某一个对象的时候,就需要主动去new一个对象实例,才能够使用该对象
      • 控制反转:反转就是当你需要用到某一个对象的时候,就向Spring IOC容器发请求,由Spring IOC容器返回一个对象实例给你,即将组件之间的关系从程序内部提到外部容器来管理。
    • 依赖注入(DI,Dependency Injection)

      • 依赖注入是控制反转的具体实现。
      • 因为对象资源的获取全部要依赖于Spring IOC容器,组件之间的依赖关系由容器在应用系统运行期来决定,在需要的时候由Spring IOC容器动态地往组件中注入需要的实例对象就叫做依赖注入。
    • 面向切面编程(AOP,Aspect Oriented Programming)

      • 面向切面编程利用了一种称为【横切】的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用的模块,并将其命名为【切面(Aspect)】。简单的说,就是那些与业务无关,却为业务模块锁共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合,并有利于未来的可操作性和可维护性。
      • 利用【横切】技术,AOP把软件系统分为了两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与业务处理关系不大的部分是横切关注点。横切关注点的一个特点是,它们经常发生在核心关注点的多处,而各处基本相似,比如说权限认证、日志和事务等。AOP的作用在于分离系统中的各个关注点,将核心关注点和横切关注点分离开来。
  • 3、数据库ES和MongoDB

其他:

  • 1、分布式、高性能、高可用设计

  • 2、设计模式(请问你用过哪些设计模式,介绍一下单例模式的多线程安全问题)

    • 装饰器模式:
      对已经存在的某些类进行装饰,以此来扩展一些功能,从而动态的为一个对象增加新的功能。
      装饰器模式是一种用于代替继承的技术无需通过继承增加子类就能扩展对象的新功能使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀

    • 请问如何保证单例模式只有唯一实例?你知道的都有哪些方法?

      1)饿汉式:基于class loader 机制避免多线程的同步问题,不过,instance 在类装载时就实例化,可能会产生垃圾对象。

      2)懒汉式:通过双重锁机制实现线程安全。使用锁机制,防止多次访问,可以这样,第一次判断为空不加锁,若为空,再进行加锁判断是否为空,若为空则生成对象。

    • 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依
      赖于它的对象都得到通知并被自动更新。

    • 工厂模式:工厂模式主要解决接口选择的问题。该模式下定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,使其创建过程延迟到子类进行。解耦,代码复用,更改功能容易。

  • 3、待补充

3、OS重点

进程管理

  • 1、线程和进程的区别? 有了进程为什么需要线程。
  • 2、进程,线程间的通信方式? 进程上下文切换? 如何创建线程池?
  • 3、线程冲突怎么办? 什么是死锁,乐观锁,悲观锁?

网络管理

  • 1、 什么是IO模型? IO 模型了解哪些

    • 磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存 10 倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝、直接 I/O、异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量
    • 阻塞I/O:应用程序发起I/O操作后,被阻塞直到操作完成。 非阻塞I/O:应用程序发起I/O操作后,可以立即返回,但需要通过轮询或其他方式来检查操作是否完成。 I/O复用(select/poll/epoll):应用程序通过将多个文件。
  • 2、如何实现IO多路复用, select/poll/epoll 分别讲讲

    • I/O 多路复用接口最大的优势在于,用户可以在一个线程内同时处理多个 socket 的 IO 请求。

    • 最基础的 TCP 的 Socket 编程,它是阻塞 I/O 模型,基本上只能一对一通信,那为了服务更多的客户端,我们需要改进网络 I/O 模型。比较传统的方式是使用多进程/线程模型,每来一个客户端连接,就分配一个进程/线程,然后后续的读写都在对应的进程/线程,这种方式处理 100 个客户端没问题,但是当客户端增大到 10000 个时,10000 个进程/线程的调度、上下文切换以及它们占用的内存,都会成为瓶颈。 为了解决上面这个问题,就出现了 I/O 的多路复用,可以只在一个进程里处理多个文件的 I/O,Linux 下有三种提供 I/O 多路复用的 API,分别是:select、poll、epoll。

    • select 和 poll 并没有本质区别,它们内部都是**使用「线性结构」**来存储进程关注的 Socket 集合。

      在使用的时候,首先需要把关注的 Socket 集合通过 select/poll 系统调用从用户态拷贝到内核态,然后由内核检测事件,当有网络事件产生时,内核需要遍历进程关注 Socket 集合,找到对应的 Socket,并设置其状态为可读/可写,然后把整个 Socket 集合从内核态拷贝到用户态,用户态还要继续遍历整个 Socket 集合找到可读/可写的 Socket,然后对其处理。

      很明显发现,select 和 poll 的缺陷在于,当客户端越多,也就是 Socket 集合越大,Socket 集合的遍历和拷贝会带来很大的开销,因此也很难应对 C10K。

    • epoll 是解决 C10K 问题的利器,通过两个方面解决了 select/poll 的问题。

      • epoll 在内核里使用「红黑树」来关注进程所有待检测的 Socket,红黑树是个高效的数据结构,增删改一般时间复杂度是 O(logn),通过对这棵黑红树的管理,不需要像 select/poll 在每次操作时都传入整个 Socket 集合,减少了内核和用户空间大量的数据拷贝和内存分配。
      • epoll 使用事件驱动的机制,内核里维护了一个「链表」来记录就绪事件,只将有事件发生的 Socket 集合传递给应用程序,不需要像 select/poll 那样轮询扫描整个集合(包含有和无事件的 Socket ),大大提高了检测的效率。

      而且,epoll 支持边缘触发和水平触发的方式,而 select/poll 只支持水平触发,一般而言,边缘触发的方式会比水平触发的效率高。

  • 3、高性能网络 Reactor 和 Proactor 的实现

    • 常见的开源软件很多都采用了这个方案,比如 Redis、Nginx、Netty 等等。
    • Reactor 可以理解为「来了事件操作系统通知应用进程,让应用进程来处理」,而 Proactor 可以理解为「来了事件操作系统来处理,处理完再通知应用进程」。
    • 不过,无论是 Reactor,还是 Proactor,都是一种基于「事件分发」的网络编程模式,区别在于 Reactor 模式是基于「待完成」的 I/O 事件,而 Proactor 模式则是基于「已完成」的 I/O 事件。

其他:

  • 1、讲一下请求分段管理和请求分页管理(虚拟内存管理)、什么是虚拟内存、虚拟内存的实现

    • 为了在多进程环境下,使得进程之间的内存地址不受影响,相互隔离,于是操作系统就为每个进程独立分配一套虚拟地址空间,每个程序只关心自己的虚拟地址就可以,实际上大家的虚拟地址都是一样的,但分布到物理地址内存是不一样的。作为程序,也不用关心物理地址的事情。

    • 每个进程都有自己的虚拟空间,而物理内存只有一个,所以当启用了大量的进程,物理内存必然会很紧张,于是操作系统会通过内存交换技术,把不常使用的内存暂时存放到硬盘(换出),在需要的时候再装载回物理内存(换入)。

    • 那既然有了虚拟地址空间,那必然要把虚拟地址「映射」到物理地址,这个事情通常由操作系统来维护。那么对于虚拟地址与物理地址的映射关系,可以有分段分页的方式,同时两者结合都是可以的。

    • 内存分段是根据程序的逻辑角度,分成了栈段、堆段、数据段、代码段等,这样可以分离出不同属性的段,同时是一块连续的空间。但是每个段的大小都不是统一的,这就会导致外部内存碎片和内存交换效率低的问题。

    • 于是,就出现了内存分页,把虚拟空间和物理空间分成大小固定的页,如在 Linux 系统中,每一页的大小为 4KB。由于分了页后,就不会产生细小的内存碎片,解决了内存分段的外部内存碎片问题。同时在内存交换的时候,写入硬盘也就一个页或几个页,这就大大提高了内存交换的效率。

    • 再来,为了解决简单分页产生的页表过大的问题,就有了多级页表,它解决了空间上的问题,但这就会导致 CPU 在寻址的过程中,需要有很多层表参与,加大了时间上的开销。于是根据程序的局部性原理,在 CPU 芯片中加入了 TLB,负责缓存最近常被访问的页表项,大大提高了地址的转换速度。

    • Linux 系统主要采用了分页管理,但是由于 Intel 处理器的发展史,Linux 系统无法避免分段管理。于是 Linux 就把所有段的基地址设为 0,也就意味着所有程序的地址空间都是线性地址空间(虚拟地址),相当于屏蔽了 CPU 逻辑地址的概念,所以段只被用于访问控制和内存保护

    • 最后,说下虚拟内存有什么作用?

      第一,虚拟内存可以使得进程对运行内存超过物理内存大小,因为程序运行符合局部性原理,CPU 访问内存会有很明显的重复访问的倾向性,对于那些没有被经常使用到的内存,我们可以把它换出到物理内存之外,比如硬盘上的 swap 区域。

      第二,由于每个进程都有自己的页表,所以每个进程的虚拟内存空间就是相互独立的。进程也没有办法访问其他进程的页表,所以这些页表是私有的,这就解决了多进程之间地址冲突的问题

      第三,页表里的页表项中除了物理地址之外,还有一些标记属性的比特,比如控制一个页的读写权限,标记该页是否存在等。在内存访问方面,操作系统提供了更好的安全性。

  • 2、待定

  • 3、待定

1、进程管理
线程和进程的区别、有了进程为什么需要线程
创建线程池时的基本参数?如何合理配置这些参数
进程间通信 (同步) 方式
什么是死锁?产生条件、死锁预防、死锁避免
进程/线程上下文切换具体指的是什么

2、网络系统
select/poll/epoll 分别讲讲
IO 模型了解哪些

3、内存管理
讲一下请求分段管理和请求分页管理(虚拟内存管理)、什么是虚拟内存、虚拟内存的实现


线程和进程的区别、有了进程为什么需要线程

  • 1.进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发
    2.线程是进程的子任务,是CPU 调度和分派的基本单位, 用于保证程序的实时性,实现进程内部的并发
    3.线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。 每个线程完成不同的任务,但是共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等等),打开的文件队列和其他内核资源。

  • 1.一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。 线程依赖于进程而存在。
    2.进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存
    3.进程是资源分配的最小单位,线程是CPU 调度的最小单位;

  • 进程提供了独立的执行环境,而线程可以在进程内部并发执行任务。有了进程之后,引入线程的目的是为了更高效地利用系统的资源和提高程序的并发性。线程可以实现并发处理,使得多个任务可以同时进行,提高系统的吞吐量和响应性。

  • 进程编程调试简单可靠性高,但是创建销毁开销大;
    线程正相反,开销小,切换速度快,但是编程调试相对复杂。

进程间通信 (同步) 方式?

  • 进程间通信的方式:
    进程间通信主要包括管道、系统IPC(包括消息队列、信号量、信号、共享内存等)、以及套接字socket
  • 1、管道主要包括无名管道和命名管道:
    管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信
  • 2、消息队列
    消息队列,是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标记。(消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点)
    具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息
    1)消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。
    2)消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。
    3)消息队列可以实**现消息的随机查询,**消息不一定要以先进先出的次序读取,也可以按消息的类型读取。
  • 3、信号量semaphore
    信号量(semaphore)与已经介绍过的IPC 结构不同,它是一个计数器,可以用来控制多个进程对共享资源的访问。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。
    1)信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。
    2)信号量基于操作系统的PV 操作,程序对信号量的操作都是原子操作。
    3)每次对**信号量的PV 操作不仅限于对信号量值加1 或减1,**而且可以加减任意正整数。
    4)支持信号量组。
  • 4、共享内存(Shared Memory)
    它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等
    1)共享内存是最快的一种IPC,因为进程是直接对内存进行存取
    2)因为多个进程可以同时操作,所以需要进行同步
    3)信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问
  • 5、套接字SOCKET:
    socket 也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同主机之间的进程通信。

线程间通信的方式:

  • 1、临界区:通过多线程的串行化来访问公共资源或一段代码, 速度快,适合控制数据访问;
    互斥量Synchronized/Lock:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问
  • 2、信号量Semphare:为控制具有有限数量的用户资源而设计的,它允许多个线程在同一时刻去访问同一个资源,但一般需要限制同一时刻访问此资源的最大线程数目。
    事件(信号),Wait/Notify:通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作

请问怎么实现线程池

  • 1.设置一个生产者消费者队列,作为临界资源
    2.初始化n 个线程,并让其运行起来,加锁去队列取任务运行
    3.当任务队列为空的时候,所有线程阻塞
    4.当生产者队列来了一个任务后,先对队列加锁,把任务挂在到队列上,然后使用条件变量去通知阻塞中的一个线程

进程/线程上下文切换具体指的是:

  • 进程/线程上下文切换指的是从一个进程/线程切换到另一个进程/线程时,操作系统需要保存当前进程/线程的上下文信息(包括寄存器状态、程序计数器等),并加载下一个进程/线程的上下文信息,以便恢复执行。

  • 上下文切换的过程包括以下步骤:

    1. 保存当前进程/线程的上下文信息。

    2. 切换到目标进程/线程的上下文信息。

    3. 恢复目标进程/线程的执行。

  • 上下文切换是操作系统进行任务调度和并发执行的基本机制之一。它发生的频率过高会导致额外的开销,降低系统性能,因此优化上下文切换的开销对于提高系统的效率和响应性非常重要。

创建线程池时的基本参数?如何合理配置这些参数

  • 参考
  • 核心线程数(Core Pool Size):线程池中保持的最小线程数,即使线程处于空闲状态,也不会被回收。
  • 最大线程数(Maximum Pool Size):线程池中允许的最大线程数,超过这个数量的线程将被拒绝。
  • 空闲线程存活时间(Keep Alive Time):当线程池中的线程数量超过核心线程数时,空闲线程的存活时间,超过这个时间将被回收。
  • 阻塞队列(Blocking Queue):用于存储等待执行的任务的队列,可以选择不同类型的阻塞队列,如有界队列(限制队列的容量)或无界队列。
  • ————————————————
  • 线程工厂(Thread Factory):用于创建新线程的工厂对象,可以自定义线程的创建过程。
  • 根据系统资源和任务特点来确定核心线程数和最大线程数,以充分利用系统资源并避免资源过度占用。
  • 据任务数量和处理速度来选择合适的阻塞队列类型和容量,以平衡任务的产生和消费速度
  • 根据任务的性质和执行时间来调整空闲线程的存活时间,避免频繁创建和销毁线程的开销。
  • 可根据实际情况选择合适的线程工厂,进行线程的定制化配置。

什么是死锁?产生条件、死锁预防、死锁避免

  • 死锁是指两个或多个进程(线程)在执行过程中因争夺资源而造成的相互等待的状态,导致程序无法继续执行下去。死锁产生的条件包括互斥、请求与保持、不可剥夺和循环等四个条件。

    • 死锁的预防:通过破坏死锁产生的条件之一来预防死锁,如破坏互斥、破坏请求与保持、破坏不可剥夺或破坏循环等。
    • 死锁的避免:在资源分配过程中,使用安全序列算法来避免系统进入死锁状态,通过动态地检查系统状态,只分配不会导致死锁的资源请求。
    • 死锁的检测与解除:通过资源分配图或银行家算法等方法来检测死锁的发生,并采取相应的措施解除死锁,如资源剥夺、进程终止或进程回退等。

————————————————————————————————————

系统网络

请你来介绍一下5 种IO 模型

  • 1.阻塞IO:调用者调用了某个函数,等待这个函数返回,期间什么也不做,不停的去检查这个函数有没有返回,必须等这个函数返回才能进行下一步动作
  • 2.非阻塞IO:非阻塞等待,每隔一段时间就去检测IO 事件是否就绪。没有就绪就可以做其他事。
  • 3.信号驱动IO:信号驱动IO:linux 用套接口进行信号驱动IO,安装一个信号处理函数,进程继续运行并不阻塞,当IO 时间就绪,进程收到SIGIO 信号。然后处理IO 事件。
  • 4.IO 复用/多路转接IO:linux 用select/poll 函数实现IO 复用模型,这两个函数也会使进程阻塞,但是和阻塞IO 所不同的是这两个函数可以同时阻塞多个IO 操作。而且可以同时对多个读操作、写操作的IO 函数进行检测。知道有数据可读或可写时,才真正调用IO 操作函数
  • 5.异步IO:linux 中,可以调用aio_read 函数告诉内核描述字缓冲区指针和缓冲区的大小、文件偏移及通知的方式,然后立即返回,当内核将数据拷贝到缓冲区后,再通知应用程序。
  • IO模型包括阻塞I/O、非阻塞I/O、I/O复用(select/poll/epoll)和异步I/O等:
    • 阻塞I/O:应用程序发起I/O操作后,被阻塞直到操作完成。
    • 非阻塞I/O:应用程序发起I/O操作后,可以立即返回,但需要通过轮询或其他方式来检查操作是否完成。
    • I/O复用(select/poll/epoll):应用程序通过将多个文件

select/poll/epoll 分别讲讲

  • 是用于实现I/O多路复用的机制:

    • select:是一种传统的I/O多路复用机制通过用户提供的文件描述符集合来检查多个文件描述符的状态,有一定的限制,如文件描述符数量受限等。
    • poll:与select类似,也是一种I/O多路复用机制,可以同时监视多个文件描述符的状态变化,相对于select,poll没有文件描述符数量的限制。
    • epoll:是Linux特有的I/O多路复用机制,通过内核事件表来管理文件描述符,提供高效的事件通知机制,减少了遍历文件描述符的开销,适用于高性能的网络编程。

讲一下请求分段管理和请求分页管理(虚拟内存管理)、什么是虚拟内存、虚拟内存的实现

  • 请求分段管理和请求分页管理是虚拟内存管理的两种实现方式:

    • 请求分段管理:将进程的逻辑地址空间划分为多个段,如代码段、数据段和堆栈段等,每个段的大小可以根据需要进行动态调整。每个段都有一个段表来映射逻辑地址到物理地址,实现地址转换。
    • 请求分页管理:将进程的逻辑地址空间划分为固定大小的页面,如4KB,每个页面都有一个页表来映射逻辑地址到物理地址。通过页表的映射,实现地址转换。

    虚拟内存是一种将物理内存和磁盘空间组合起来使用的技术,它为每个进程提供了一个连续的虚拟地址空间。虚拟内存的实现利用了内存管理单元(MMU)进行地址转换,将进程的虚拟地址映射到物理地址。

模板3:算法 & 项目(移动与TW)

1、算法补充

  • 1、数组:dp,贪心,二分,排序

    • 按数字出现频率打印数组

      维护k大堆,按次数快排

    • 给你一个数组, 把他变成大顶堆/小顶堆

      堆排序,最后一个非叶子节点n/2-1,比较左右子树,交换后重新递归左右子树

    • 在一个像素矩阵中有一条封闭曲线,给出一个点的坐标,怎么判断该点在曲线内。

      dfs联通块?

  • 2、链表:快慢指针,双指针,栈队列

    • lru

      链表:get移动到头部,put修改后移动到头部

  • 3、树图:dfs,回溯

    • 给一个二维数组, arr(i,j) 代表点i -> 点j的距离,从0号点开始出发,遍历每一个点最后回到0号点,每个点只能经过一次,输出最短路径和路径的权值和

      哈密顿图? hdu 1599无向图的最小环。Floyd 算法保证了最外层循环到 k 时所有顶点间已求得以 0…k-1 为中间点的最短路径。参考

    • 在一棵二叉树中找三个数的最小公共祖先,尽量只用一次遍历实现

      记录父节点,然后循环,三个点一起网上跳。

2、移动面经(重点)

  • 第一次面国企,很神奇的面试体验,不知道是不是都这样。
  • 用的腾讯会议,比预定时间等了2.5小时多才被叫进去,只聊了大概五分钟多点,几乎没问任何技术问题。
  • 迪士尼排队两小时,畅玩两分钟既视感。
  • 三个环节:自我介绍1分钟+提问2分钟+反问2分钟。
  • 是211或双一流吗。
  • 之前在哪里上班,做什么业务,技术栈是什么,为什么不留用。
  • 浙江本地人吗,岗位杭州有没有问题。
  • 讲讲hive和mysql的区别?讲讲spark做什么用的(大概讲了下实习工作,没展开)。
  • java有用过吗(讲了下学校项目,也没展开)。
  • 反问:具体做什么业务,技术栈是什么?一周后出结果。
  • 感受:之前蚂蚁和美团都是突然发的面试,下午约晚上就面那种,加上开的时间点早,一点都没准备,本来想着拿实习和项目口糊,结果被疯狂拷打八股,这次特地请假背了好久,结果啥都没问,有一种感觉准备了一堆都没用上的感觉。
再补一个其他的面经

今天早上面试中国移动,是早上10.00让进腾讯会议,我卡点进的,人家给我打电话了。然后主持人给大家分配编号,改成编号+名字。我候场候了一个半小时,然后主持人会把我邀请进另外一个房间。

有两个男面试官,一个年龄稍微大点,一个年龄年轻一点。
1.首先自我介绍,一分钟时长
2.然后问了问我的课题
3.再然后问我,胜任这个工作有什么困难的地方没?
4.手上有没有offer,是哪家的?
5.问我的学校在光电方面很优秀,导师有没有介绍研究所一些给我?
6.是哪里人?
7.考虑去干类似于“销售”,然后带领团队的那种。我当然回答可以了(年轻一点的面试官就问了这一个问题)
nowcoder/discuss/419543573941551104

3、TW面经(重点)

  • 总结了下面经大概是三轮
  • 1、结对编程面(非算法),我做了差不多3个需求,具体内容忘了,反正不难,而且面试官说也不是看完成情况,而是看完成过程中的综合表现,沟通什么的,然后需求也会根据实际现场调整。
  • 2、项目交流和八股(如有)
  • 3、给主题presentation,然后文化面。
  • 开始以为是500强,结果后来发现不是,是给500强做外包的。。。2024春招介绍。
  • 不过好处似乎是面试简单/只看沟通什么的,需要准备的不多,而且待遇似乎躺平起来很爽,稳定性相对不如国企,但是这两年国企其实也裁员+卷作息,外企至少没这个顾虑,能学英语也是一个利好,不过又是全栈。。。。
一面:结对编程面, 9.1,60分钟
跟大多数面经一样,我的主题是购物车项目,面试官非常的和蔼,也没有架子。在简单的聊了下后,给了我三个要求,都非常简单。不过TW很重视TDD和结对编程,因此每个要求都是和面试官一边聊天一边写的,基本上我会把我的思路实现方式先解释一下,面试官会思考一下并给我建议,如果思路有误或者出现了奇怪的BUG, 面试官还会跟我一起看并指出来,因为在实现过程中就已经和面试官交流很多了,所以实现出来就已经是两人讨论好的样子,重构部分就大大减少了。面试官中间还教我了一下win10 intellij规范格式的快捷键,并聊了聊TW的情况。仔细想想,大概整个编程部分都在一直聊天。大概40分钟多点时把要求都完成了,然后继续聊天,这位面试官挺健谈的,告知了我一些TW的上班情况,氛围和一些机制。聊到了时间结束,整体感觉很开心,就像小组项目大家一起写代码一样


二面,pre面+文化面,9.9,30分钟
大概9.6收到二面通知,不知为何,虽然我投的是西安国内线,但邮件的附件依然要求我用英文准备pre。我的pre主题是元宇宙,于是在外网搜索了资料,并摘抄一些油管视频和TED的内容准备了演讲稿。面试官看起来比一面的面试官严肃一些,一开始先让我自我介绍,因为目前还是全中文介绍,所以我这部分是用中文介绍的。PRE环节,我选择了英文演说。结束后面试官夸奖我准备了很多资料,英语也不错(有点小开心),不过跳过了Pre询问环节,直接开始问其他问题。比如留学了多久,有没有什么长期目标,说说一个自己写过的技术含量高点的项目之类的。之后问我什么时候可以入职,我回答最近就可以,于是开始向我介绍一些入职后的培训环节和公司的一些分工机制。之后就是反问环节,问了点公司机制,时间到了就结束了。二面氛围也很好,就是两个人像聊天一样
TW的面试氛围整体都很轻松,比起一般大厂会更偏向考察面试者的软技能,比如沟通能力和分析能力。

3. 大致说一下,我的是一个购物车,在此基础上,增加三个需求就ok。(详细就不能说啦)

4. 结对编程注意
- 写业务代码前,一定先写Junit测试
- 写完任意一个业务代码后,一定要执行测试
- 写完任意一个需求时,一定要git提交(不会使用的提前熟悉一下)
- 多和面试官沟通!有困惑就沟通,面试官人都是很好的!沟通好业务逻辑后,剩下的就是无聊的code了
- code很简单,code很简单,code很简单。

5.据面试官说正式工作里也有结对编程,有点过于抽象了,能不能送个妹子一起啊那不是爽翻天。。。


参考:nowcoder/398797263898771456

TDD-测试驱动开发
在编写某个功能的代码之前先编写好测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。

SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期引入,指代了面向对象编程和面向对象设计的五个基本原则

面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。

结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。 一个人输入代码,而另一个人审查他输入的每一行代码。 输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。 两个程序员经常互换角色。



自我介绍
针对自我介绍内容提问
完成需求
介绍所给项目整体与细节
分析要实现的需求
40min完成两个需求后,面试官说就可以了
针对简历提问
询问英语水平,听说读写

反问环节:
1.总体评价:解决问题思路很清晰,虽然说有一些小失误但很快找出来
2.什么时候出结果:中秋后了,他们要放假
presentation主题是自动驾驶,

软开岗位 文化面
流程 :
面试官自我介绍
面试者自我介绍
面试官聊天式的问问题
面试者讲一段英文(自己想说什么说什么)
结束
总计 : 半小时左右
面试问题 :
1. 你是怎么了解到thoughtworks公司的。
答 : 先挑了所有的外企,然后thoughtworks的包容,定期分享,公益活动吸引了我。
2. 你说你做公益了,讲一下
答 : 讲了自己的公益精力
3. 如果现在有个需要受助的群体,你要怎么帮他们
答 : 先自己或者号召社会帮他们,再找他们的优点,让他们自助,构建一个良性循环。
4. 你从身边人学到了那些特性。随便说一个
答:具体示例,我说了学到了换位思考能力。
5. 最近周围的人都是怎么评价你的,如果有不好的评价,你能接受吗?
答 : 肯定可以接受
6. 比如说你室友打呼噜,你怎么办?
答 : 会直接说的,我们都是很open的,面试官也想要这个答案
7. 说一段英文吧,30s考虑,说一分钟就行,随便想说什么说什么。
答 :巴拉巴拉巴拉巴拉


大概就是一些hr面的问题,了解你整个人的大概情况,在thoughtworks,我感觉主要是了解你这个人的思想,理念,和公司文化搭不搭;
因为superX探路者计划是面向非专科的学生嘛,我感觉会想了解你转码的决心,或者说你对写代码的兴趣;
个人分析,thoughtworks的团队理念也是很重要的,善于沟通,或者团结一致的相关理念应该也在hr的考虑范围之内。
整个二面跟面试官聊的很开心,过程非常放松,最后反问的时候问了大概多久会有最终结果,面试官说帮我问问,哈哈哈,虽然他也没法儿再联系我,但是也超级感谢他,面试官人超好的!!!

4、算法补充

  • 算法:手撕链表,要求递归实现。

    算法:忘记了。。好像是中等题。

5、中国移动笔试

  • 今年还真的这么出,要打人了
    1、言语理解 10
    2、数理运用 20
    3、逻辑推理 20
    4、空间几何 20
    5、创新学习 20
    6、移动文化 10
    以上共100题,每题1分,总分100分
    性格测试185题(包含6个选,xxx待遇是你更想要的,然后各种排序)

  • 中国移动笔试题型
    两个小时内做完题目,没有单独倒计时
    1.行测
    类似公务员考试的行测,包含 言语理解(20道题)、逻辑推理(35道题)、数学运算(10道题)、资料分析(10道题) 等,考点相对集中,复习后比较好拿分,必须认真复习。
    2.行业知识
    本部分考点主要包含移动企业文化和新闻知识、创新思维两部分,属于最容易与裸考考生拉开差距的部分。
    该部分每年的题型和考试范围非常固定,校招口号、企业文化、前沿技术(物联网、5G等)、发展战略等几乎是每年的必考题。
    该部分是比较创新的题目类型,有点类似脑筋急转弯,主要出题形式有提过几个单词或者图片,问考生能联想到什么;或者要求考生在几个词里面找到不同类的词。比如:提到秋天,你会联想到什么?

  • 特别注意1:移动的企业文化部分涵盖范围比较广,包括行业知识、移动新闻、企业文化等都会考到,甚至校招的主题都会考,这个是看了就能拿分的题,建议多看移动的百科介绍和官网新闻。
    特别注意2:创新思维的15道题,掌握思考套路最重要。这部分的题要用脑筋急转弯的思维来进行答题思考,答题思考套路非常固定,因此特别建议做完往年真题掌握答题时的思考套路。
    3.性格测试
    判断考生的心理状态是否适合国企工作。提前知道有这样的题就好,有个心理准备,不要到时候惊慌失措,90%以上的考生可以顺利通过。

中国移动笔试题型
行测(准考证、身份证):线下考试(现在改为机考了)
行业知识:机考
性格测试(EPI):机考,不计分

综合素质:
1.言语理解与表达 共15题
2.数理运用 共20题
3.逻辑推理 共25题
4.创新学习 共15题
5.资料分析 共15题
6.企业文化与行业知识 共10题
以上共100题,每题1分,总分100分
另外还有性格测评 140题 (不计分,正常基本都没问题。)
练题
6.企业文化与行业知识 共10题

目录:
1)校招口号:和你移起,一路领先
2)企业文化:
3)前沿技术:(物联网、5G)
4)最新战略:

详解(2022校招)
1)校招口号:和你移起,一路领先
2)企业文化:
①中国移动企业文化理念体系的总体原则:(以塑造中国移动“追求卓越”、“承担责任”)的核心价值观位中心,实现文化层面的(一个中国移动(One CM))
②中国移动企业文化理念体系由(核心价值观、使命、愿景)三部分组成
③中国移动的企业理念体系包含
(企业使命、企业宗旨、企业价值观、企业精神)四方面的内容
④中国移动通信企业理念体系包含
(企业使命、企业价值观、企业经营宗旨、企业精神、企业服务理念)五个方面的内容
⑤核心价值观:正德 厚生 臻于至善
企业价值观:持续位社会位企业创造更大价值
企业经营理念:以客户位中心,追求企业价值最大化
⑥中国移动通信的企业使命:(创造无限通信世界,做信息社会栋梁)
⑦中国移动通信企业愿景:(成为卓越品质的创造者)
⑧中国移动通信公司的企业精神:(改革创新、只争朝夕、艰苦创业、团队合作)
⑨从2006年2月17日起,企业对外宣传口号由(“移动通信专家”)调整为(“移动信息专家”)
⑩中国移动通信集团公司正式成立于(2000年4月20日)


①“CMCC”是中国移动集团公司的缩写,其中文含义按顺序为(以客户为中心、追求价值最大化、发挥员工创造力、致力于人类沟通事业)
②企业文化包含三个层次(精神层面的“企业理念形态文化”、制度层面的“制度形态文化”、物质层面的“物质形态文化”)
③企业文化是指企业全体员工在创业和发展过程中培育形成并共同遵守的最高目标、价值标准、基本信念以及行为规范等的总和
④企业文化来源于(员工),来源于公司的实践;同时又指导着员工的行为,是对企业的运营产生作用的(价值理念),企业文化有其企业特色,不能生抄硬搬
⑤公司八字服务精神是(微笑、诚恳、温和、敏捷)
⑥按照国家培育一批具有国际竞争实力的大型企业集团的要求,中国移动通信确立了(做世界一流通信企业)的发展战略目标
⑦中国移动通信已经成功进入国际资本市场,于(1997)年在境外成功上市后,良好的经营业绩和巨大的发展潜力吸引了众多国际投资,先后为国家吸纳大量外汇
⑧中国移动通信集团公司注册资本为518亿源人民币,资产规模超过(7000亿)元
⑨(2000)年底,中国移动的交换容量超过1亿用户


中国移动通信的愿景是( 成为卓越品质的创造者 )。
中国移动对投资者的承诺是 (做最具价值的创造者) 。
中国移动通信的核心价值观是 “正德厚生,臻于至善”。
中国移动的企业使命是“创无限通信世界 做信息社会栋梁”。



6、补一些春招以来的感受吧:

  • 先部门面试再发统一笔试的操作让我很不想参加。之前企鹅和蚂蚁都是,一个好的一个不好的,两个结果,但是总让我有一种可能面的还不错但是笔完寄了就很亏的感觉。

  • 虽然也有不少厂是笔完ak了再给的一面挂,也很可惜吧,不过至少可能压力不是那么大。尤其是国企的笔试都跟测评,行测,gwy考试一样,感觉完全没法准备。

  • 互联网测评一般不会挂,但是国企没有考公基础,这笔试真的很艹。
    互联中大厂测评:北森,赛马(代码),,(比较通用,好好做一般不容易挂)
    传统行业,硬件等厂商:大易,智鼎 (很难搜到原题)
    国企很多:自己命题(包括平安IQ,16PF等),MAP88, 部分找得到,但是数量很多,很难复习
    外企很多:TAS,SHL (一般比较简单,直接乱做,题库也不容易搜)

  • 国企技术岗出这种题目不觉得很抽象吗?
    早知道就不做了,烦,好像也没说一定要做吧。

  • 跟考研一样,笔试完了一面挂,已经糟心了(互联网还是好多面),,但是起码考研复录比再高总能进个1/3以上的,互联网一面完全可以10进1以上,2个hc捞30多个人面试都是常规操作。。。但是移动这种先面完再笔试的操作,,我也是,,,,

  • 反正春招到现在为止,也看了200多,投了100多家了,做了至少20甚至30多场笔试和测评,也见过线下笔的,线上笔试最多是牛客和赛马,有些平台会自建。 国企的笔试往往跟测评一样(但是互联网测评只做参考,国企作为笔试计分就很抽象)。 也有面过线下的,面过线上的,面过互联网,国企,外企,都有。 互联网考八股,国企走流程,外企神奇操作。

  • 大部分很多都是简历完就没消息, 也有测评和笔完没消息的,,,一般来说都是笔试过了面试挂的,但是笔试也会挂(尤其是遇到抽象的行测题和选择题的情况下,就算算法出的奇怪点也没办法保证ak的)。

  • 然后还有没笔试直接面试的,这个感觉也很理解,很多提前批是这样,流程里就没有笔试。 但是抽象一点的,也有先约面试过了然后笔试挂的(不点名了,太抽象了),或者先约面试笔试就没做的(包括offer了和直接一面挂)。。。

  • 一般来说互联网面试至少2技术+1HR=3轮次,甚至多的会有4-5轮甚至更多。。。但是目前的情况还是停留在大部分流程都没走到过第二轮(如果笔试不算流程的话),主要原因可能也是准备不够充分,感觉都是上去乱搞一波,,但是真的没时间精力,也没有方向可以去准备啊很多时候感觉,,可能我开的坑实在太多了。 当然也有一共只有2轮甚至1轮面试的,虽然比较少,,不知道能不能苟住。。。反正走一步是一步了。。。。

本文标签: 后端 工程师 amp TW