1.两道算法题 
   ①输出数组中所有的满足条件的数。应该满足的条件:自己左边的每个数都大于自己,自己右边的每个数都小于自己。 
   解法1:左右遍历并建二叉查找树(很低效)。解法2:左右遍历的时候设置一个遍历到的最大/小变量,用来判断本元素是否满足条件。(要考虑到有重复元素的情况,面试官说只保存下标就行。到现在也不知道怎么个只保存下标法。。) 
   ②链表相加 
   input:8->7>6  和 2->3->4 
   output: 1->1->1->0 
   我:递归或栈。面试官:规定空间复杂度O(1),不能创建新的节点。 
   解:逆置链表再相加,在原链表基础上对节点值修改。(不能创建新的节点这个规定让代码写起来需要考虑一些情况,我写了很多行。。面试官建议在保证质量的同时尽量缩减代码冗余度) 
   三十五分钟过去了。 
   2.线程同步的方法;生产者消费者问题;信号量和互斥锁除了值域不同还有什么区别。  
   还有一些多线程编程问题比如说两个线程轮流打印A和B。  
   多线程编程这块实在不会,别问了球球了。。  
   3.死锁的条件;死锁的例子(答:C++智能指针对象互指引用计数无法归零造成死锁。面试官:这不是线程死锁的例子。)  
   面试官很年轻,会给提示引导,总体体验挺好。 
                              
                    
                    
                
            
                                                
                                                
                        
                        
                        
                        
                        
            
            
                    
                    
                            
全部评论
(1) 回帖