好文档 - 专业文书写作范文服务资料分享网站

2020年京东精选50面试题及答案

天下 分享 时间: 加入收藏 我要投稿 点赞

p(mutex); write (); v(mutex); v(empty); v(c); } I

D (){

while(true){

P (full); p(mutex); write (); v(mutex); v(empty); v(d);

26. 进程和线程的区别介绍?

1、 首先是定义

进程:是执行中一段程序,即一旦程序被载入到内存中并准备执行,它就是一个进程。 进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的 单位。 线程:单个进程中执行中每个任务就是一个线程。线程是进程中执行运算的最小单位。

2、 一个线程只能属于一个进程,但是一个进程可以拥有多个线程。多线程处理就是允 许

一个进程中在同一时刻执行多个任务

3、 线程是一种轻量级的进程,与进程相比,线程给操作系统带来侧创建、维护、和管 理的

负担要轻,意味着线程的代价或开销比较小。

4、 线程没有地址空间,线程包含在进程的地址空间中。线程上下文只包含一个堆栈、 一

个寄存器、一个优先权,銭程文木包含在他的进程的文木片段中,进程拥有的所有 资源都属于线程。所有的线程共享进程的内存和资源。同一进程中的多个线程共享代 码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥 有自己的栈段,寄存器的内容,栈段又叫运行时段,用来存放所有局部变量和临时变 里。

5、 父和子进程使用进程间通信机制,同一进程的线程通过读取和写入数据到进程变量 来

通信。

6、 进程内的任何线程都被看做是同位体,且处于相同的级别。不管是哪个线程创建了 哪

一个线程,进程内的任何线程都可以销毁、挂起、恢复和更改其它线程的优先权。线

程也要对进程施加控制,进程中任何线程都可以通过销毁主线程来销毁进程,销毁主线 程将导致该进程的销毁,对主线程的修改可能影响所有的线程。

7、子进程不对任何其他子进程施加控制,进程的线程可以对同一进程的其它线程施加 控制。

子进程不能对父进程施加控制,正程中所有线程都可以对主线程施加控制。 相同点:

进程和线程都有ID脣存器组、状态和优先权、信息块,创建后都可更改自己的属性, 都可与父进程共享资源、都不鞭直接访问其他无关进程或线程的资源。

27. 请描述分布式的优势.

分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分 布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中, 它们之间通过RPC方式通信。

举个例子,假设需要开发一个在线商城。按照微服务的思想,我们需要按照功能模块拆 分成多个独立的服务,如:用户服务、产品服务、订单服务、后台管理服务、数据分析 服务等等。这一个个服务都是一个个独立的项目,可以独立运行。如果服务之间有依赖 关系,那么通过

RPC方式调用。

分布式的好处:

系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的 边界非常明确,排错也变得相当容易,开发效率大大提升。

系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务。假设 这个商城要搞一次大促,下单量可能会大大提升,因此我们可以针对性地提升订单系统、 产品系统的节点数量,而对于后台管理系统、数据分析系统而言,节点数量维持原有水 平即可。 服务的复用性更高。比如,当我们将用户系统作为单独的服务后,该公司所有的产品都 可以使用该系统作为用户系统,无需重复开发。

28. 阅读下面代码,回答问题.

# include nainO {

int su)n^ pad^ pAd; Sum = pad = 5;

pAd = ++sum^ pA

, pad);

果斟

6

29. 变量a是一个64位有符号的整,初始值用16进制表示

为:0x7FFFFFFFFFFFFFFF;变量b是一个64位有符号的整数,初 始值用16进制表示为0x8000000000000000.则a+b的结果 用10进制表示为多少?

-1

30. if [$2 -a $2 = \中-a 是什么意思?

并且

31. 已知 int 占个字节,unsigned char 占 1 个字节,unsigned int number=Oxffaabcdd;下 种方式 可以将number的 值变为 Oxffaacddd?

A. *( (unsigned char*) (&number) + l)=0xcd; B. number = (number & OxffffiJOff) | OxOOcdOO; C. number = (number & 0xffee43dd) | Oxbbaacddd; D. number = (number & Oxffccbcff) + 0x1100;

A,B,C

32. 模式串的长度是m,主串的长度是n(m

配的时间复杂度是?

0 (m+n)

KMP字符串匹配时间复杂度一定是0(N)銭性

33.求O-n之间二进制内没有连续三个1的数的个数.

#include using namespace std; int v[100];

int dp [100] [3]; int dfs (int len, int flag, bool limit; {

if (flag == 3)return 0; if (len == 0) return 1;

if (J limit&&dp [len] [flag] != T; return dp [len] [flag]; int maxx = limit ? v[len] : 1; int ent = 0;

for (int i = 0; i <= maxx; i++)[

if (i == 0){

ent += dfs (lernl, 0, } else{

ent += dfs (lern 1, flag+1 ,

} }

return limit ? ent : dp[len] [flag] = ent; }

int solve(long long x){

memset (v, 0, sizeof (v)); int k = 0; while (x){

v[++k] = x % 2; x ?=1; }

return df s (k, 0, true); }

int main() {

memset(dp, 1, sizeof(dp)); long long a; cin >> a;

cout?solve (a) ?endl; return 0;

-

== v[len]):

== v[len]);

34. C++ 智能指针 shared_ptr、weak ptr 的实现.

Counter类

Counter 象的目地就是用来申请一个块内存来存引用计数。shareCount是SharedPtr 的引用计

数,weakCount是弱引用计数。 当shareCount为0时,删除X对象。

当 weakCount 为 0 同时 shareCount 为 0 时,删除 Count er*对象。

Counter实现如下: class Counter

[ public:

int shareCount - 0; int weakCount = 0; };

SharedPtr类

主要的成员函数包括: 默认构造函数

参数为T*的explicit单参数构造函数 参数为WeakPtr&的explicit单参数构造丞数 拷贝构造函数 拷贝赋值函数 析构函数

隐式类型转换操作符operator bool ()

operator -〉() operator * () ShazedPtr实现如下:

template class WeakPtr; template class SharedPtr

{

public:

friend class WeakPtr; /防便v/eak_ptr与share」h设置弓囲计数和赋值。 SharedPtr ()

:m_pResource(nullptr) , m_pCounter(new Count er()) [

m_pCount er\

explicit SharedPtr(T* pResource = nullptr)

2020年京东精选50面试题及答案

p(mutex);write();v(mutex);v(empty);v(c);}ID(){while(true){P(full);p(mutex);write();v(mutex);v(empty);v(d);26.进程和线程的区别介绍?1、首先
推荐度:
点击下载文档文档为doc格式
8utyq5c5gu8mpoj7ocb09o8y29wtcx00z09
领取福利

微信扫码领取福利

微信扫码分享