技术一面(1h左右) 个人来说还是很忐忑的,不过面试官很随和,还说是校友,让我放放松。先是自我介绍 balabala...聊了下之前的工作,但是因为不是开发所以就简单讲了讲,又问了下遇到过的最困难的问题是什么?怎么解决的? balabala...看面经好多都要问计算机网络的问题 但我没学过,所以作罢,开始手撕代码手撕代码 ——lc 1019. 链表中的下一个更大节点刚开始特蠢的,拿到就开始写暴力解... (面试官中间还提示了一下 可以把它当成数组来做)然鹅我就是一个埋头写,写完了正常讲一下思路,指出了程序的一个小毛病 —— malloc完之后要判空(刷题哪写过判空,此处应该是实际生产过程中的严谨吧,学到了),理所当然说这方法时间复杂度太大了,能不能优化下,(面试官第二波暗示,可以先想下,我们来复盘笔试题~)。开始复盘笔试题,其实和这题一模一样,当时是恰好做到了类似的题,记了一下,用起来就忘了...(此时,面试官再次暗示,当时你做这个题还挺有算法思想的,讲下思路吧,还问我 你了解单调栈么?)好家伙,我就开始回忆解题过程,面试官为了让我答出来真是煞费苦心T.T。大概讲了一下之后时间就差不多了,我提问就问了下大概什么时候有结果,面试官说很快,结束后hr就说让我再好好看看内存的知识和数据结构,准备下二面。又看了几天数据结构,还看了看计算机网络,计算机组成等等,根本复习不完,硬着头皮开始二面。(之前看到二面有的会让写笔试没写出来的题,所以又好好写了一遍笔试第三题)首先还是自我介绍,项目经历,然后开始C语言的八股上来二面面试官先问了一个应该是软件封装相关的问题?设计一个程序交付的时候,如果程序中包含A,B,C 三个不同的功能函数,怎么实现不同客户能够使用不一样的功能? 比如说:甲客户可以使用ABC三个功能,乙客户只能用AB... 这个问题属于是盲区了,当时也没太听懂 没答上来。const 和 #define 的区别 答:const 定义的是变量 #define 是常数 是简单的字符替换分别的起作用阶段 答:#define 编译 const 运行 (应该是编译、运行吧)C语言内存分为哪些区? 答:(当时答得有点乱)应该是代码区、静态区、栈区、堆区吧答:数组、字符串、栈、队列、二叉树、链表答:随机选一个数小于的放左边 等于放中间 大于放右边 然后左右再递归 时间复杂度最优nlogn 最差n^2讲一下哈希表 还有它的应用 答:(说实话不太用哈希)key值 value 组成的表 应用是能统计查询(不太会用所以答得模棱两可)讲一下什么是二叉树,它能实现什么其他的数据结构 答:从根节点向下递归延伸出左右不相交子树的结构体 二叉树能构造大根堆小根堆(讲的比较笼统,还说错一次说成 桶 @_@ 晕 后来改口说是堆 不知道面试官听没听到)开始手撕代码 —— lc 39. 组合总和有了第一次暴力解的经历,这次我痛定思痛,开始想优化算法,刚开始以为和3数之和那样,整个多指针,但是元素不限次数使用,数目不定,遂放弃;之后想了很久也没想出更好的解法,面试官看了下时间,就让我写了几段伪代码讲讲思路,最后还是 排序+暴力回溯DFS 解的。反问环节:1.面试结果要等多久? 面试官不是我面的那个部门的,所以不太清楚,但结果会尽快上报。(本来以为二面是相关部门面试的,准备了好多个反问问题,都没问出来,尴尬...) 2.代码有没有什么更优解的思路? 面试官答复回溯算法解是没问题的,优化方向可以在约束条件、边界条件上再想想说实话自己水平确实有待提高,不过就单单准备面试笔试的过程中就已经收获了不少东西了,发出来大家看个热闹就好,还有一个原因就是面经很少有C,很多都是Java、python 所以就想分享一下,供学C的同学小小参考下,目前紧张等待消息中... 希望有奇迹QAQ!!!...查看更多