【总】算法、数据结构、语言 整理

 
 

头条面试 

 1.打印一棵树右侧的轮廓

class Node

{

int value;

std::vector<Node*> children;

}

2.删除单链表中重复的节点

3.map相关的 (STL 要会用)

4.文本处理的

a.txt  

name  age

Alice   21

laura   22

输出

b.txt

name  Alice laura

age   21   22

 5.输出一字符串中出现次数最多的字符和次数

     https://www.jb51.net/article/153211.htm

 

 

星环科技

问题1.

一个大文件 里面时int型数字,输入一个数字,判断数字是否在里面:

int型 大小  -(2^31+1) ~ 2^31

遍历一遍文件,每个数字作为下标,用一个bit记录。这里用一个char记录一个bit,会浪费7bit。

要 2^32 个bit,

正数: 用一个bitmap1数组

负数:用一个bitmap2数组

但是不能直接char bitmap[2^32],因为临时变量时从栈上分配的,会不够,用new从堆上分配可以吗?

int main()

{

 

ifstream fp;

int rc=fp.open("test.txt",ios:in);

if(rc==0)

{

    cout<<"fail to open the file"<<endl;\

    return 0;

}

int tmp;

/*这里是用一个char 即8个bit记录一个bit的消息,浪费了

若用bit 记录,那么 每个 tmp /8 作为数组的索引,tmp%8 作为char里面bit的索引, 

tmp/8 

bitmap1[tmp/8] = (1<< tmp%8) | bitmap1[tmp/8] ;

*/

char *bitmap1=new char[2^32];

char *bitmap2=new char[2^32];

memset(bitmap1,0,sizeof(bitmap1));

memset(bitmap2,0,sizeof(bitmap2));

while(!fp.eof())

{

   fp>> tmp;

   if(tmp>0)

        bitmap1[tmp]=1;

  else

     tmp=-tmp;

      bitmap2[tmp]=1;

}

int indata;

cin>>indata;

if(indata>0)

{

   if(bitmap1[indata])

           cout<<"find the data"<<endl;

   else

          cout<<"fail to find the data"<<endl;

}

else

     {

       indata=-indata;

      if(bitmap2[indata])

           cout<<"find the data"<<endl;

   else

          cout<<"fail to find the data"<<endl;

}

return 0;

}

   

问题2. 

单链表删除重复节点   1->1>1->2>3>5>6   变为  2->3->5->6        2->4->8->8->9->11 变为 2->4->9->11

https://blog.csdn.net/gatieme/article/details/51604199

https://zhuanlan.zhihu.com/p/33638917

 

问题3.硬币找零问题   面值数组  vector<int>={1,2,5......}   amount=11,找出用最少硬币数。

 

 

 ucloud面试

1.判断单链表是否有环

慢指针1步,快指针2步,若是有环,那么最终两个指针会在环里一直绕直到相遇,否则链表结束。

 2. 一个数组,[1,-3,2,5,-2,6,2```]找出里面三个一组和为0的组合。

3.void memcpy(void * src,void *dst, uint32_t length){} 实现memcpy函数 把src处length长度的数据拷到dst处

 https://blog.csdn.net/laoyang360/article/details/8020409

数据结构与算法

https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/Readme.md

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html?utm_source=wechat_session

 

9、数据结构和算法问题Top 50:

https://hackernoon.com/50-data-structure-and-algorithms-interview-questions-for-programmers-b4b1ac61f5b0

 

10、编程面试中的链表问题Top 30:

http://javarevisited.blogspot.sg/2017/07/top-10-linked-list-coding-questions-and.html#axzz4xXS86IVo

 

11、基于数组的编程问题Top 30:

http://javarevisited.blogspot.sg/2015/06/top-20-array-interview-questions-and-answers.html#axzz4tUeeQOAU

 

12、电面编程问题Top 50:

https://javarevisited.blogspot.com/2015/02/50-programmer-phone-interview-questions-answers.html#axzz5C5tt0mTL

 

字符串处理

数组相关

最长公共子序列

二叉树遍历

队列

链表

        链表的基本操作

     1、单链表的创建和遍历

  2、求单链表中节点的个数

  3、查找单链表中的倒数第k个结点(剑指offer,题15)

  4、查找单链表中的中间结点

  5、合并两个有序的单链表,合并之后的链表依然有序【出现频率高】(剑指offer,题17)

  6、单链表的反转【出现频率最高】(剑指offer,题16)

  7、从尾到头打印单链表(剑指offer,题5)

  8、判断单链表是否有环

  9、取出有环链表中,环的长度

  10、单链表中,取出环的起始点(剑指offer,题56)。本题需利用上面的第8题和第9题。

  11、判断两个单链表相交的第一个交点(剑指offer,题37)

 

动态规划

 STL快速入门

http://c.biancheng.net/stl/

原理性

 C++中virtual类的实现机制

 c++ 的多态性

vector

 

TCP/IP  UDP 等网络协议  

 
网络编程,多线程编程
 
 
 
语言
go 
https://github.com/qyuhen/book

posted @ 2018-09-27 14:59  yimuxi  阅读(267)  评论(0编辑  收藏  举报