2024年最新【记录成长】大学时光已过半, 分享我的大二暑期实习经历_ppa,2024年最新来一份全面的面试宝典练练手

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  1. 构建和安装Anbox:- 进入克隆的存储库:cd anbox- 创建并进入构建目录:mkdir build && cd build- 运行CMake命令以配置构建:cmake …- 运行构建命令:make- 运行安装命令(需要管理员权限):sudo make install
  2. 配置内核模块:- 运行以下命令以加载Anbox内核模块:sudo modprobe ashmem_linux && sudo modprobe binder_linux- 为了确保每次系统启动时都加载这些模块,你可以将它们添加到/etc/modules文件中。
  3. 启动Anbox:- 在终端中运行anbox session-manager命令以启动Anbox。- 你可以在应用程序菜单中找到Anbox图标并点击它来启动。

请注意,Anbox需要一些特定的硬件和软件支持才能正常运行,例如KVM(用于虚拟化)和OpenGL ES 3.0(用于图形加速)。确保你的系统满足这些要求。此外,Anbox仍然处于开发阶段,可能会遇到一些问题和限制
解决

查看内核安装 : ls -alh /dev/binder /dev/ashmem
删除
使用–remove选项删除错误的PPA:如果您之前尝试添加了错误的PPA,您可以使用sudo add-apt-repository --remove ppa:morphis/anbox-support命令来删除该PPA。

安装 waydroid

  • sudo apt install curl ca-certificates -y
  • curl https://repo.waydro.id | sudo bash
  • sudo apt install waydroid -y


源错误 —— 博客

n:14 https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu lunar InRelease
Ign:15 https://ppa.launchpadcontent.net/beineri/opt-qt-5.15.2-focal/ubuntu lunar Release
Ign:12 https://ppa.launchpadcontent.net/christian-boxdoerfer/fsearch-stable/ubuntu lunar InRelease
Ign:13 https://ppa.launchpadcontent.net/libreoffice/ppa/ubuntu lunar InRelease
Ign:14 https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu lunar InRelease
Ign:15 https://ppa.launchpadcontent.net/beineri/opt-qt-5.15.2-focal/ubuntu lunar Release
Get:16 http://archive.ubuntu.com/ubuntu focal/universe DEP-11 48x48 Icons [3016 kB]
Ign:12 https://ppa.launchpadcontent.net/christian-boxdoerfer/fsearch-stable/ubuntu lunar InRelease
Ign:13 https://ppa.launchpadcontent.net/libreoffice/ppa/ubuntu lunar InRelease
Ign:14 https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu lunar InRelease
Ign:15 https://ppa.launchpadcontent.net/beineri/opt-qt-5.15.2-focal/ubuntu lunar Release
Get:17 http://archive.ubuntu.com/ubuntu focal/universe DEP-11 64x64 Icons [7794 kB]
Get:18 http://archive.ubuntu.com/ubuntu focal/universe DEP-11 64x64@2 Icons [44.3 kB]
Ign:4 http://archive.ubuntu.com/ubuntu focal/universe arm64 Packages
Get:5 http://archive.ubuntu.com/ubuntu focal/universe Translation-en [5124 kB]
Err:12 https://ppa.launchpadcontent.net/christian-boxdoerfer/fsearch-stable/ubuntu lunar InRelease
  Could not connect to ppa.launchpadcontent.net:443 (2620:2d:4000:1::3e). - connect (113: No route to host) Could not connect to ppa.launchpadcontent.net:443 (185.125.190.52), connection timed out [IP: 185.125.190.52 443]
Err:13 https://ppa.launchpadcontent.net/libreoffice/ppa/ubuntu lunar InRelease
  Unable to connect to ppa.launchpadcontent.net:https: [IP: 185.125.190.52 443]
Err:14 https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu lunar InRelease
  Unable to connect to ppa.launchpadcontent.net:https: [IP: 185.125.190.52 443]
Err:15 https://ppa.launchpadcontent.net/beineri/opt-qt-5.15.2-focal/ubuntu lunar Release
  Unable to connect to ppa.launchpadcontent.net:https: [IP: 185.125.190.52 443]
Ign:4 http://archive.ubuntu.com/ubuntu focal/universe arm64 Packages
Err:4 http://archive.ubuntu.com/ubuntu focal/universe arm64 Packages
  404  Not Found [IP: 185.125.190.39 80]
Ign:4 http://archive.ubuntu.com/ubuntu focal/universe arm64 Packages
Err:4 http://archive.ubuntu.com/ubuntu focal/universe arm64 Packages
  404  Not Found [IP: 185.125.190.39 80]
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://repo.waydro.id lunar InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0E406D181DCEE19C
E: The repository 'https://ppa.launchpadcontent.net/beineri/opt-qt-5.15.2-focal/ubuntu lunar Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

geduer@ulan:~$ sudo vim /etc/apt/sources.list^C
geduer@ulan:~$ sudo vim /etc/apt/sources.list

需求 8.4
Host+Del键表示键盘上的Ctrl+Alt+Del组合


  • 解决 klioeye抢占 windows Ctrl键 的权限kiloeye_keyboard_call.c
  • 增加菜单 调用函数


ID_KEYBOARDEVENT_INSET
ID_KEYBOARDEVENT_PRINTSCREEN


#define ID_KEYBOARDEVENT_ALTPRINTSCREEN 40008
#define ID_KEYBOARDEVENT_CTRL_BREAK     40009
#define ID_KEYBOARDEVENT_HOST_DELECT    40010

insert  的值错了 

    if (GetKeyState(VK_CONTROL) & 0x8000) {
        pk.flags |= HID_KB_LEFT_CTRL;
    }
    if (GetKeyState(VK_MENU) & 0x8000) {
        pk.flags |= HID_KB_LEFT_ALT;
    }
    if (GetKeyState(VK_SHIFT) & 0x8000) {
        pk.flags |= HID_KB_LEFT_SHIFT;
    }

case VK_INSERT:
        pk.keypress[0] = 0x0049;

代码规范

  • 命名
  • 涉及到指针函数 + 报错提示
  • 传固定值 用宏定义
  • 固定 !! 不写恶心代码
  • GDB ! !
  • evtest

id_ app 热键

linux 报错 改为

if(nkm_handle == 0) {
     fprintf(stderr, "ERROR: Failed to open keyboard device. \n");
     exit(EXIT_FAILURE);
}


c a T
window 千里眼 接口开发

sudo ./kiloeye -v  调用 ctrl + v 键
sudo ./kiloeye -c  调用 ctrl + c 键
-i      insert 键
-h    ctrl+alt+insert键
-b break 键  
-a   alt + prtsc 键
-p   prtsc 键


/*
 * MS_Data_Pack[0] 是 Button 按钮位
 * MS_Data_Pack[1] X 轴方向位移
 * MS_Data_Pack[2] Y 轴方向位移
 * MS_Data_Pack[3] 滚动方向
 * 
 * MS_Data_Pack[0] :
 * bit 0 : Button left
 * bit 1 : Button right
 * bit 2 : Button mid

鼠标发送给PC的数据每次4个字节
BYTE1 BYTE2 BYTE3 BYTE4
定义分别是:
BYTE1 –
|–bit7: 1 表示 Y 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出
|–bit6: 1 表示 X 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出
|–bit5: Y 坐标变化的符号位,1表示负数,即鼠标向下移动
|–bit4: X 坐标变化的符号位,1表示负数,即鼠标向左移动
|–bit3: 恒为1
|–bit2: 1表示中键按下
|–bit1: 1表示右键按下
|–bit0: 1表示左键按下
BYTE2 – X坐标变化量,与byte的bit4组成9位符号数,负数表示向左移,正数表右移。用补码表示变化量
BYTE3 – Y坐标变化量,与byte的bit5组成9位符号数,负数表示向下移,正数表上移。用补码表示变化量
BYTE4 – 滚轮变化。
*/
#define MS_LDOWN       0b00000001 // 左键按下
#define MS_RDOWN       0b00000010 // 右键按下
#define MS_MDOWN       0b00000100 // 中键按下
#define MS_XDOWN       0b00001000 // X 按钮按下
#define MS_X_NEGATIVE  0b00010000 // X 坐标变化量为负数
#define MS_Y_NEGATIVE  0b00100000 // Y 坐标变化量为负数
#define MS_X_OVERFLOW  0b01000000 // X 坐标变化量溢出
#define MS_Y_OVERFLOW  0b10000000 // Y 坐标变化量溢出

#define MOUSEEVENTF_MOVE        0x0001 /* 鼠标移动 */
#define MOUSEEVENTF_LEFTDOWN    0x0002 /* 左键按下 */
#define MOUSEEVENTF_LEFTUP      0x0004 /* 左键弹起 */
#define MOUSEEVENTF_RIGHTDOWN   0x0008 /* 右键按下 */
#define MOUSEEVENTF_RIGHTUP     0x0010 /* 右键弹起 */
#define MOUSEEVENTF_MIDDLEDOWN  0x0020 /* 中键按下 */
#define MOUSEEVENTF_MIDDLEUP    0x0040 /* 中键弹起 */
#define MOUSEEVENTF_XDOWN       0x0080 /* X 按钮按下 */
#define MOUSEEVENTF_XUP         0x0100 /* X 按钮弹起 */
#define MOUSEEVENTF_WHEEL                0x0800 /* 滚轮滚动 */
#define MOUSEEVENTF_HWHEEL               0x1000 /* 水平滚轮滚动 */
#define MOUSEEVENTF_MOVE_NOCOALESCE      0x2000 /* 不合并鼠标移动事件 */
#define MOUSEEVENTF_VIRTUALDESK          0x4000 /* 映射到整个虚拟桌面 */
#define MOUSEEVENTF_ABSOLUTE             0x8000 /* 绝对移动 */



在 C 语言中,可以使用互斥锁(mutex)来实现多线程加锁。互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。您可以使用 <pthread.h> 库中的 pthread_mutex_t 类型来定义一个互斥锁变量,然后使用 pthread_mutex_init 函数来初始化它。在需要加锁的地方,您可以使用 pthread_mutex_lock 函数来加锁,而在需要解锁的地方,您可以使用 pthread_mutex_unlock 函数来解锁。
下面是一个简单的示例,演示了如何在 C 语言中使用互斥锁:
复制
上面的代码定义了一个互斥锁变量 lock,并在 main 函数中使用 pthread_mutex_init 函数对其进行了初始化。然后创建了两个线程 t1 和 t2,它们都会执行 thread_func 函数。在 thread_func 函数中,我们使用 pthread_mutex_lock 函数对互斥锁进行加锁,然后执行临界区代码,最后使用 pthread_mutex_unlock 函数对互斥锁进行解锁。
希望这个示例能够帮助您理解如何在 C 语言中使用互斥锁来实现多线程加锁。如果您还有其他问题,欢迎继续咨询!😊

guvcview: symbol lookup error: /home/geduer/backup_guvcview-src-2.0.8/gview_render/.libs/libgviewrender-2.1.so.2: undefined symbol: nd_trace_i (最后遇到的bug)

学到了什么

  • 沟通很重要 多沟通 多总结
  • 遇到问题不会就多问
  • 收敛一下脾气,学会容忍
  • 多利用 stfw & gpt
  • 多规划
  • 第一次去一线城市,开阔了眼界,
  • 可以的话周末多出去玩玩,劳逸结合!!
  • 面试建议就是提前, 多面 ,多复盘!!##

放点实习的图片

e544ba8ee1c508c38a3cf98745163d9.jpg
718459782f7f930a71f4fb92cf6cad3.jpg

737e67742f15d9d199aacc0c6ec796f.jpg
a674ae99654ef9f1108d1a0fb8ac16b.jpg

a87cf4180e020a87acb377bcfd8590f.jpg

54cffc36fc62a08fde2e6c9f06dd281.jpg

当时投递的面经

百度测试开发一面

  • 俩个项目介绍 以及 测试方面的问题
  • 讲一下输入url 发生了什么
  • 介绍一下共享指针
  • 介绍一下内存管理
  • 共享指针 引用计数 涉及到 线程安全的问题
  • 讲一下static 和 const 的区别 修饰 全局变量 用在什么方面
  • 介绍一下C++ 三大特性 (封装继承多态)
  • python shell 方面的
  • 常用的linux命令

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

linux命令

[外链图片转存中…(img-d81GxdkQ-1715667402498)]
[外链图片转存中…(img-JXaafd8j-1715667402498)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值