2023校招C++开发oppo笔试
選擇題挺雜的,做的一般
編程題第一道題思路簡單,但實現過程emmm
后面兩道都簡單,一道反轉鏈表,一道匹配字符串的題目
字符串匹配是說*號可以匹配任意字符,這個簡單直接做
反轉鏈表也挺簡單的
卡比較久的第一道編程題
第一題做了很長時間最后只通過40%,最后卡在對于一個數組
1 1 1 2 2 2 3 3 3 如何求(1+1+1)/1 + (1+1+1)/2 + (1+1+1)/3,幾次嘗試都超時了。
只能按1/1+1/1+1/1+1/2+1/2+1/2+1/3+1/3+1/3來做,只過了40%
https://blog.csdn.net/qq_42386788/article/details/126669396?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-126669396-blog-126660031.pc_relevant_multi_platform_whitelistv6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-126669396-blog-126660031.pc_relevant_multi_platform_whitelistv6&utm_relevant_index=9
看了別人的題解,就是在定義time的時候定義為浮點數,這樣1/3會損失精度,但應該還好。。。
選擇題
字符串指針和數組
char* b = "hello world!";//sizeof(b0 = 8char A[] = "hello world!";//sizeof(A) = 13....Linux文件查看權限
andriod四大組件
https://blog.csdn.net/ican87/article/details/21874321
activity、content provider、reciver、sevice
cache
Cache與主存統一編址,Cache的地址空間屬于主存的一部分
內存抖動:指在短時間內有大量的對象被創建或者被回收的現象。
內存抖動產生原因:主要是頻繁(很重要)在循環里創建對象(導致大量對象在短時間內被創建,由于新對象是要占用內存空間的而且是頻繁,如果一次或者兩次在循環里創建對象對內存影響不大,不會造成嚴重內存抖動這樣可以接受也不可避免,頻繁的話就很內存抖動很嚴重),內存抖動的影響是如果抖動很頻繁,會導致垃圾回收機制頻繁運行(短時間內產生大量對象,需要大量內存,而且還是頻繁抖動,就可能會需要回收內存以用于產生對象,垃圾回收機制就自然會頻繁運行了)。
內存抖動影響:頻繁內存抖動會導致垃圾回收頻繁運行,造成系統卡頓。
1 耗時的操作使用線程,提高應用程序響應
2 并行操作時使用線程,如C/S架構的服務器端并發線程響應用戶的請求。
3 多CPU系統中,使用線程提高CPU利用率
4 改善程序結構。一個既長又復雜的進程可以考慮分為多個線程,成為幾個獨立或半獨立的運行部分,這樣的程序會利于理解和修改。
其他情況都使用單線程。
在所有非搶占CPU調度算法中,系統平均響應時間最優的是短任務優先算法
selinux
SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對于強制訪問控制的實現,是 Linux歷史上最杰出的新安全子系統。NSA是在Linux社區的幫助下開發了一種訪問控制體系,在這種訪問控制體系的限制下,進程只能訪問那些在他的任務中所需要文件。SELinux 默認安裝在 Fedora 和 Red Hat Enterprise Linux 上,也可以作為其他發行版上容易安裝的包得到。
自旋鎖
自旋鎖的定義:當一個線程嘗試去獲取某一把鎖的時候,如果這個鎖此時已經被別人獲取(占用),那么此線程就無法獲取到這把鎖,該線程將會等待,間隔一段時間后會再次嘗試獲取。這種采用循環加鎖 -> 等待的機制被稱為自旋鎖(spinlock)。
https://www.cnblogs.com/cxuanBlog/p/11679883.html
自旋鎖是為了實現保護共享資源而提出的一種機制, 其實自旋鎖和互斥鎖比較類似, 他們都是為了解決對某項資源的互斥使用。無論是互斥鎖,還是自旋鎖,在任何時刻,最多只能有一個保持者,也就說,在任何時刻最多只能有一個執行單元獲得鎖。
虛函數
2.或是在基類的析構函數中調用該函數,此時派生類以被銷毀;
冒泡排序
void*
https://www.runoob.com/w3cnote/c-void-intro.html
頭文件和static
如果你在一個頭文件里定義了static全局變量,在幾個源文件中包含這個頭文件,結果就是這幾個源文件分別都有了一個static全局變量 這就是不管你在其他幾個源文件里怎么改,負責輸出的那個源文件輸出的值永遠不變的原因,因為這幾個源文件都有一個叫這個名字的變量,這幾個變量彼此之間沒有任何關系
文件描述符
#Linux下的 0 1 2文件描述符
1 是標準輸出(stdout)
2 是標準錯誤輸出(stderr)
0 是標準輸入(stdin)
不同文件描述符可以對應同一個文件
程序異常退出,會釋放文件描述符
臨界資源
binder
Binder是Android系統中進程間通訊(IPC)的一種方式,也是Android系統中最重要的特性之一。Binder的設計采用了面向對象的思想,在Binder通信模型的四個角色里面;他們的代表都是“Binder”,這樣,對于Binder通信的使用者而言,Server里面的Binder和Client里面的Binder沒有什么不同,一個Binder對象就代表了所有,它不用關心實現的細節,甚至不用關心驅動以及SM的存在;這就是抽象。
總結
以上是生活随笔為你收集整理的2023校招C++开发oppo笔试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019校招面经大汇总
- 下一篇: 电商网站适合用什么服务器?