2022-09-02-oppo-笔试-78min-90左右

linux 岗

单选多选25min

24
1

单选 17*2‘

  1. selinux (?)
    A. 可以用 setenforce 命令关闭
    B. 在oppo手机上是关闭的
    C. 的规则在编译阶段检验,在运行时不做额外校验,因此对于网上下载的文件、手机中预装的任何程序包括系统服务,都可对其访问
    D. 将文件权限设为777后,selinux 对其的限制将会失效

关闭方法:1、临时关闭,只需执行“setenforce 0”命令即可。2、永久关闭,需要执行“vi /etc/selinux/config”命令打开config文件,将“SELINUX”项的值改为“disabled”,保存文件并退出即可。

  1. 关于linux文件描述符不对的是()
    A. 是一种资源,在程序异常退出时不会被释放
    B. 一般用整形变量表示
    C. 某进程中不同文件描述符可以对应同一个文件
    D. 0是一个特殊的文件描述符

A

  1. android 广播
    A. 接收者声明的优先级别在android:priority属性中声明,值越小优先级别越高
    B. 只能在AndroidManifest.xml 中注册
    C. 只能在代码中注册
    D. 有序广播按优先级传播,可以随时被截断

图片说明

D

  1. android 4大组件不包括:
    content provider; context; broadcast receive; service

活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)
B

  1. which wrong
    A. Cache 与主存统一编址,cache地址空间属于主存一部分
    B. 在所有非抢占CPU调度算法中系统平均响应时间最短的是短任务优先算法
    C. 耗时的操作使用线程提供程序响应
    D. 内存抖动指频繁换页活动

    A. 不是统一编址

  2. which wrong D?
    A. Binder 传输数据的数据大小太大的话可能导致通信失败
    B. Binder 可以用来传输文件描述符,从而在不同进程中用同一个文件
    C. Binder 可以单向通信,对端进程可以不用发送回复信息
    D. Binder 是Android 提出的一个新型进程间通信机制,仅依靠userspace即可完成进程间通信

  3. 关于C语言头文件的说法不对的是
    A. 可以include后缀不是".h"的头文件
    B. 可以通过宏定义来避免被重复include
    C. 可以在头文件中定义一个static变量,在多个C文件***享数据
    D. 可以在头文件中实现static类型的函数

C

多选 3*2’

  1. 数字通信系统的特点
    传输差错可控、抗干扰能力强、较大传输带宽、同步要求高

AB

  1. 正确的是 BC
    A. 如果只有一个线程写,其他线程读,不会出现线程不安全
    B. 如果所有线程都读一个共享变量,不会出现线程不安全问题
    C. 出现线程安全问题根本原因是线程抢占式执行
    D. 两个线程修改同一个变量就会出现线程不安全问题

3个编程60‘

第一题前后做了36min差点放弃

/**
//      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
//      *
//      * 输入参数是每个应用持有WakeLock的起始时间及结束时间,函数返回值是每个应用对总WakeLock时长的贡献值,
//        返回值vector里面的每个元素的数值累加即为手机总的持有WakeLock的时长。
//      * @param wakeLock int整型vector<vector<>> vector<vector<int>>的每个元素代表某个应用的持有WakeLock的信息,
//        内部的vector<int>,元素按照奇偶排列,偶数元素代表拿WakeLock的起始时间点,奇数代表释放WakeLock的时间点
//      * @return int整型vector
//      */

输入:[[1234,1235],[1236,1238]]
输出:[1,2]
解释:第一个应用的时间片长度是1,无重叠,第二个是2

输入 [[1234,1240],[[1236,1238],[1245,1250]]
输出 [5,6]
解释:1236到1238两个应用共享长为2的时间片,各分1个单位,第一个应用是 2+1+2,第二个应用是1+5=6

// 第一种 差分+前缀和 80%
// 26min 一遍80%*15' 3ms 428KB
// class Solution {
// public:
//     vector<int> getWakeLockContrib(vector<vector<int> >& wl) {
//         int n=wl.size();
//         if(n==0) return {};
//         int minv=wl[0][0],maxv=wl[0][0];
//         for(auto& i:wl)
//             for(auto&j :i)
//             {
//                 minv=min(minv,j);
//                 maxv=max(maxv,j);
//             }
//         vector<int> d(maxv-minv+1,0);
// //         for(int i=0;i<n;i++)
// //             wl[i].push_back(i);
// //         sort(wl.begin(),wl.end());
//         for(int i=0;i<n;i++){
//             for(int j=0;j<wl[i].size();j+=2){
//                 d[wl[i][j]-minv]++;
//                 d[wl[i][j+1]-minv]--;
//             }
//         }
//         vector<double> pd(d.size()+1,0);
//         for(int i=1;i<pd.size();i++)
//             pd[i]=pd[i-1]+d[i-1];
//         vector<int> a(n,0);
//         vector<double> af(n,0);
//         for(int i=0;i<n;i++){
//             for(int j=0;j<wl[i].size();j+=2){
//                 int fr=wl[i][j]-minv;
//                 while(fr<wl[i][j+1]-minv){
//                     fr++;
//                     af[i]+=1.0/pd[fr];
//                 }
//             }
//         }
//         for(int i=0;i<af.size();i++)
//             a[i]=af[i];
//         return a;
//     }
// };


//  第一题第二种 10min 100%*15' 3ms 576KB
// 本来还是按 1.0/c[s] 来算,还是80%,浮点数太精确了

class Solution {
public:
    vector<int> getWakeLockContrib(vector<vector<int> >& wl) {
        int n=wl.size();
        if(n==0) return {};
        unordered_map<int, int> c;
        for(int i=0;i<n;i++){
            for(int j=0;j<wl[i].size();j+=2){
                int s=wl[i][j];
                while(s<wl[i][j+1])
                    c[s++]++;
            }
        }
        vector<int> a(n,0);
        for(int i=0;i<n;i++){
            int d=0.0;
            for(int j=0;j<wl[i].size();j+=2){
                int s=wl[i][j];
                while(s<wl[i][j+1])
                {
                    int t=s+1, cnt=c[s];
                    while(t<wl[i][j+1]&&cnt==c[t])
                        t++;
                    d+=(t-s)/cnt;
                    s=t;
                }
            }
            a[i]=d;
        }
        return a;
    }
};

// 第二题 100%*20’ 9min 反反+暴力 一次过
// 字符串反向查找
// * 表示匹配任意字符
// 找最后一次匹配的起始位置

// 输入:“hello world" "ow"
// 输出:7

// 输入:“hello world" "l*o"
// 输出:9

// 输入:“hello world" "l**"
// 输出:2

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * findStr从反方向查找子串,返回最后一次匹配成功时,子串的偏移位置,如果没有匹配成功返回-1
     * @param str string字符串 待匹配的字符串
     * @param mod string字符串 匹配模式字符串
     * @return int整型
     */
    int findStr(string str, string mod) {
        reverse(mod.begin(),mod.end());
        for(int i=0;i<=str.length()-mod.length();i++){
            int b=0,j=i;
            while(b<mod.length()){
                if(mod[b]=='*'||mod[b]==str[j]){
                    b++,j++;
                }else break;
            }
            if(b==mod.length())
                return j-1;
        }
        return -1;
    }
};

// 第三题 25'*100% 8min 一遍过
// 反转链表

/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 *    ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * #例如 
#输入 {1.2,3,4,5}
#输出 {5,4,3,2,1}
     * @param head ListNode类 链表的头节点
     * @return ListNode类
     */
    ListNode* reverseList(ListNode* h) {
        if(!h)return h;
        ListNode* last=nullptr,*nn;
        while(h->next){
            nn=h->next;
            h->next=last;
            last=h;
            h=nn;
        }
        h->next=last;
        return h;
    }
};
#笔试##OPPO##oppo秋招##Linux##23届秋招笔面经#
全部评论
第一题你的ac代码应该也有问题, {1,5},{1,3},{1,3},{4,5},{4,5},应该是2,0,0,0, 0。你的结果是1,0,0,0,0
点赞 回复 分享
发布于 2022-09-03 16:57 湖北
我多媒体开发,试卷好像一样
2 回复 分享
发布于 2022-09-03 09:46 广东
数字通信特点应该四个都选的吧
1 回复 分享
发布于 2022-09-03 11:02 陕西
约面了没
点赞 回复 分享
发布于 2022-09-05 15:59 北京
多选第二的A也是正确的吗
点赞 回复 分享
发布于 2022-09-03 10:48 广东
请问第二道题字符串反向查找的代码咋写呀,可以分享一下吗
点赞 回复 分享
发布于 2022-09-03 09:56 河北
感觉第一题的用例只有5个或者10个,而且应该很简单,不然一堆for循环应该会超时。😂我用5个for嵌套都只有3ms。
2 回复 分享
发布于 2022-09-03 09:47 广东
hi~同学,秋招遇“寒气”,牛客送温暖啦!23届秋招笔面经有奖征集中,参与就得牛客会员7天免费体验,最高赢300元京东卡!戳我去看>>>https://www.nowcoder.com/link/zhengjipinglun
点赞 回复 分享
发布于 2022-09-04 08:57 北京

相关推荐

不愿透露姓名的神秘牛友
05-29 15:00
教授A:“你为什么要讲这么久,是要压缩我们对你的评议时间吗?你们别以为这样就能够让我们对你们少点意见。”&nbsp;“从你的发言和论文格式就能知道你的性格啊。”…….&nbsp;感觉被狠狠霸凌了。
码农索隆:“教授您好,首先我想回应您提出的两点疑问。” “关于我讲解时间较长的问题:这绝非为了压缩各位老师的评议时间。这份毕业设计是我过去几个月倾注了全部心血的作品,从构思、实验、调试到撰写,每一个环节都反复打磨。我深知时间宝贵,所以选择详细讲解,是希望能更完整、清晰地展示它的核心创新点、实现过程和验证结果,确保老师们能充分理解它的价值和我的努力。我完全理解并重视评审环节的意义,也做好了充分准备来听取各位老师的专业意见和批评。几个月的研究都坚持下来了,我怎么可能害怕老师们的点评呢?今天站在这里,正是抱着虚心学习、诚恳求教的态度而来。” “如果我的展示确实超时,影响了后续流程,烦请老师们随时示意,我会立刻调整。我非常期待并预留了充足的时间,希望能听到老师们宝贵的建议和深入的讨论。” “其次,关于您提到‘从发言和论文格式就能知道我的性格’。教授,我对此感到非常困惑和不安。学术研究和答辩的核心,难道不应该是作品本身的质量、逻辑的严谨性、数据的可靠性和结论的合理性吗?论文格式有明确的规范要求,我尽最大努力遵循了这些规范。如果格式上存在疏忽或不足,这属于技术性、规范性的问题,恳请老师们具体指出,我一定认真修改。但将格式问题或个人表达风格(如讲解时长)直接上升为对个人性格的评判,甚至以此作为质疑我学术态度和动机的依据,这让我感到非常不公平,也偏离了学术评议应有的客观和严谨原则。” “我尊重每一位评审老师的专业权威,也衷心希望能得到老师们对我的工作内容本身的专业指导和批评指正。任何基于研究本身的意见,无论多么尖锐,我都会认真聆听、反思并改进。但我恳请老师们,能将评议的焦点放在我的研究本身,而不是对我个人进行主观的推断或评价。谢谢各位老师。”
点赞 评论 收藏
分享
白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
点赞 评论 收藏
分享
评论
7
20
分享

创作者周榜

更多
牛客网
牛客企业服务