2022-12-17-孝庸基金-实习笔试-69min

24min+45min=69min

客观题 50'

  1. a,b,c三个任务优先级递减,同时到达,都需按顺序执行 10msCPU,13msIO,5msCPU,从c到达到完成c需要54ms

  2. -、*、$优先级递减,左结合运算,$指指数运算,5-3*2$2*4-3$2=256

  3. 123入栈有5种出栈顺序

  4. 仅当前类型能访问,用 private 关键字 仅当前程序集能访问,用internal 仅包含类或从包含类派生的类型能访问,用protected

int c=0,x=8421;
while(x){c++;x=x&(x-1);}

c=6

  1. i=0,两个线程分别执行i++100次后,i最大为200,最小为100

  2. 高h的完全二叉树最少 2h12^{h-1} 个节点,最多 2h12^h-1 个节点;4000个节点组成的二叉树最小高度是12

问答题(不能切屏、文本框写)

10+10+10+20

// 1,1,2,3,5,8,13,21,34,递归求第30位数
#include<iostream>
#define ull unsigned long long
ull f(int i, const int end, ull a, ull b){
    if(i==end) return b;
    return f(i+1,end,b,a+b);
}
int main(){
    std::cout<<f(2,32,1ULL,1ULL)<<std::endl;
    return 0;
}
// 不用基本加减乘除、不用额外空间,交换两个int的值

#include<iostream>
int main(){
    int32_t xy_num1;
    int32_t xy_num2;
    cin>>xy_num1>>xy_num2;
    xy_num1^=xy_num2;
    xy_num2^=xy_num1;
    xy_num1^=xy_num2;
    std::cout<<"xy_num1= "<<xy_num1<<", xy_num2"<<xy_num2<<std::endl;
    return 0;
}

private bool Is2Pow(int inputNumber){
    long cntOnes = inputNumber;
    cntOnes=cntOnes+(cntOnes>>1);
    cntOnes=cntOnes+(cntOnes>>2);
    cntOnes=cntOnes+(cntOnes>>4);
    cntOnes=cntOnes+(cntOnes>>8);
    cntOnes=cntOnes+(cntOnes>>16);
    if(cntOnes<2)return true;
    else return false;
}

#include<vector>  
​
​typedef pair<int,int> pii
​​
​class PriorityQueue{
    vector<pii> v;
public:
    PriorityQueue(){
       v.resize(1); // 下标为0的元素占位
    }

  // 值越小优先级越高
  void push(int val, int priority){
​        int i=v.size();
        v.emplace_back({priority, val});
​       while(i>1){
​            int fi=v<<1;
​            if(v[fi].first<priority){
​                swap(v[fi],v[i]);
​                i=fi;
​            }else break;
​        }
  }

  // 出队优先级最高的元素
    int pop(){
​        if(v.size()==1) return -1; // null queue
      int topOne = v[1].second;
​        v[1]=v.back();
​        v.pop_back();
​        int i=1;
​        while(i<(int)v.size()){
​            int li = i<<1, ri=(i<<1)+1;
​            if(li<(int)v.size()){
​                if(ri<(int)v.size()&&v[ri].first>v[li].first){
​                    li=ri;
​                }
​                if(v[li].first>v[i].first){
​                    swap(v[li],v[i]);
​                }else break;
​            }
​            i=li;
​        }
​        return topOne;
  }

  bool empty(){
      return (int)v.size()==1;  
  }

  int size(){
        return (int)v.size()-1;
  }
};
#实习.##C++实习##C++工程师##C++##实习笔试#
全部评论
客观题第6题最小值我感觉是2。线程A读0,线程B执行99次,回到线程A写1.然后反过来线程B读1,线程A执行99次,线程B写2.
5 回复 分享
发布于 2023-03-14 23:23 上海
第一题俺算的咋58
2 回复 分享
发布于 2023-01-09 14:24 河南
第三题错了 int count(int num) { num = (num & 0x55555555) + ((num >> 1) & 0x55555555); // 相邻两位上的1的和存在这两位上 num = (num & 0x33333333) + ((num >> 2) & 0x33333333); num = (num & 0x0F0F0F0F) + ((num >> 4) & 0x0F0F0F0F); num = (num & 0x00FF00FF) + ((num >> 8) & 0x00FF00FF); num = (num & 0x0000FFFF) + ((num >> 16) & 0x0000FFFF); return num; }
点赞 回复 分享
发布于 2022-12-17 01:41 上海
校友好,请问这个实习是指正式入职前要实习还是说是实习岗位啊
点赞 回复 分享
发布于 2022-12-18 17:00 上海
老铁,面试java岗算法题可以用c++写吗,平时刷题都是用c++
点赞 回复 分享
发布于 2022-12-25 20:56 山东

相关推荐

评论
10
12
分享
牛客网
牛客企业服务