2026年世纪佳缘招聘软件工程师面试问题及答案.docxVIP

  • 0
  • 0
  • 约5.53千字
  • 约 16页
  • 2026-01-20 发布于福建
  • 举报

2026年世纪佳缘招聘软件工程师面试问题及答案.docx

第PAGE页共NUMPAGES页

2026年世纪佳缘招聘软件工程师面试问题及答案

一、编程基础与数据结构(共5题,每题8分,总分40分)

1.题目:

请实现一个函数,输入一个正整数`n`,返回其二进制表示中`1`的个数。例如:`n=9`(二进制`1001`),返回`2`。

答案:

cpp

intcountOnes(intn){

intcount=0;

while(n!=0){

count+=n1;

n=1;

}

returncount;

}

解析:

-使用位运算`n1`判断最低位是否为`1`,然后右移一位继续判断。

-时间复杂度为`O(logn)`,空间复杂度为`O(1)`。

2.题目:

给定一个无重复元素的数组`nums`和一个目标值`target`,请找出所有相加等于`target`的`nums`中`n`个数的组合。例如:`nums=[2,3,6,7]`,`target=7`,返回`[[2,7],[3,4]]`。

答案:

cpp

includevector

usingnamespacestd;

vectorvectorintfourSum(vectorintnums,inttarget){

vectorvectorintres;

if(nums.empty())returnres;

sort(nums.begin(),nums.end());

intn=nums.size();

for(inti=0;in-3;++i){

if(i0nums[i]==nums[i-1])continue;

if(longlong)nums[i]3target)break;

for(intj=i+1;jn-2;++j){

if(ji+1nums[j]==nums[j-1])continue;

if(longlong)nums[i]+nums[j]2target)break;

intl=j+1,r=n-1;

while(lr){

longlongsum=(longlong)nums[i]+nums[j]+nums[l]+nums[r];

if(sum==target){

res.emplace_back(vectorint{nums[i],nums[j],nums[l],nums[r]});

while(lrnums[l]==nums[l+1])l++;

while(lrnums[r]==nums[r-1])r--;

l++;r--;

}elseif(sumtarget)l++;

elser--;

}

}

}

returnres;

}

解析:

-先排序,避免重复组合。

-使用双指针法,时间复杂度为`O(n^3)`,空间复杂度为`O(1)`。

3.题目:

请实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作。例如:容量为`2`的缓存,`put(1,1)`,`put(2,2)`,`get(1)`返回`1`,`put(3,3)`会覆盖`2`。

答案:

cpp

includeunordered_map

usingnamespacestd;

classLRUCache{

public:

structNode{

intkey,val;

Nodeleft,right;

Node(intk,intv):key(k),val(v),left(nullptr),right(nullptr){}

};

LRUCache(intcapacity):capacity(capacity),head(newNode(0,0)),tail(newNode(0,0)){

head-right=tail;

tail-left=head;

}

intget(intkey){

if(cache.find(key)==cache.end())return-1;

Nodenode=cache[key];

moveToHead(node);

returnnode-val;

}

voidput(intkey,intvalue){

if(cache.find(key)!=cache.end()){

Nodenode=cache[key];

node-val=value;

moveToHead(node);

}e

文档评论(0)

1亿VIP精品文档

相关文档