## 得物 #### 算法工程师(工程方向)二面 - **两个服务器节点上分别有两个超大型文件,两个文件只有几行是不同的,两个节点之间的带宽非常小,我们如何快速的找出不同的那几行在哪里?** - 利用哈希函数得到的哈希值可以很简单的检测数据是否相同 - 利用二分法将文件不断的切割来进行哈希值的对比 - **不用链表如何实现队列** - 利用循环数组来实现队列 - 两个指针,一个指向队首,一个指向队尾的后面一位(队首指向队尾的方向为顺时针) - 当队首指针与队尾指针间隔为 1 且队尾指针在队首指针左边表示队列已满,当两者重合时表示队列为空 - 出队时,先看队列有没有数据,有的话从队首出列,然后队首指针顺时针移动一位 - 入队时,先看队列是否满了,满了的话将队尾的值替换为新的就行,否则直接放入队尾指针,队尾指针顺时针移动一位 - c++使用多线程应该注意些什么 - 线程安全性:保证共享数据被正确同步:合理使用互斥锁和条件变量来进行同步 - 避免死锁:保证各个线程按同样的顺序上锁,避免死锁影响线程的执行 - 异常处理:在多线程程序中小心处理异常,确保异常不会使整个程序终止 - 资源管理:谨慎管理线程的创建和销毁,以避免资源泄露和性能问题,使用线程池来复用线程,而不是频繁创建和销毁线程 - 写 c++程序的时候有遇到过 core_dump 或 crash 吗,用什么去排查 - 这些问题常常是与内存访问错误和异常等有关 - core_dump 文件包含了程序崩溃时用户空间的快照,可以用 gdb 查看崩溃信息 - 同时我们也可以利用 clang static analyzer等工具检测代码潜在的问题 - 如果所用到的某个库具有日志输出,我们也可以查看日志来寻找问题 - 内存泄漏怎么检查 - 利用 valgrind 等工具来检查内存泄露 - 利用智能指针来管理堆内存来减少内存泄露的产生
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up