Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

zfman/AlgorithmCode

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AlgorithmCode

该仓库收集一些算法的答案,目标是整理一套系统的算法参考答案以供其他学习者参考

我也在慢慢的学算法并且在坚持刷题,我会不定期的上传新的题目,希望大家共同努力!

在线编程网站:

目录

排序算法

算法 稳定 时间复杂度 空间复杂度 备注
选择排序 no N2 1
冒泡排序 yes N2 1
插入排序 yes N ~ N2 1 时间复杂度和初始顺序有关
希尔排序 no N 的若干倍乘于递增序列的长度 1
快速排序 no NlogN logN
三向切分快速排序 no N ~ NlogN logN 适用于有大量重复主键
归并排序 yes NlogN N
堆排序 no NlogN 1

快速排序是最快的通用排序算法,它的内循环的指令很少,而且它还能利用缓存,因为它总是顺序地访问数据。它的运行时间近似为 ~cNlogN,这里的 c 比其他线性对数级别的排序算法都要小。使用三向切分快速排序,实际应用中可能出现的某些分布的输入能够达到线性级别,而其它排序算法仍然需要线性对数时间。

LeetCode

1-100

101-200

201-300

301-400

401-500

501_600

601-700

701-800

801_900

剑指offer

码赛

笔试真题

其他练习

面试感受

腾讯

初面过了,复试挂了!

一轮的时候氛围很轻松,我没有回答上来的会有提示,说的不正确的地方面试官会把他的理解说下,大致的问题有:

  • 设计模式中的单例如何实现线程安全?几种方法?
  • gc?
  • 三次握手?为什么需要三次?
  • 四次挥手?为什么需要四次?为什么要等待2MSL?
  • 应用层协议?
  • OSI五层协议有哪些?

还要很多很多,但是我已经想不起来了,初面在一个半小时以上(我应该是最后一个,下午6点半才面完),中间写了两道题目:

1.一个题是给你一个字符串数组,如["1","3","30","7"]组成的最大的数是多少,示例输出为73301? 这道题可以使用排序的思路来做,但是比较的规则有所变化,假设要比较3和30的大小,那么直接比较330和303的大小,330>303,那么以本题的规则就是3>30

2.第二题是给你整形数组{1,2,3,4,5,6},还有一个右移位数n=3,返回一个右移之后的数组,数组个数用m表示,示例输出[4,5,6,1,2,3],要求时间复杂度和占用的空间最小并说明占用空间大小? 最笨的方法就是循环n次,然后每次移动一位,时间复杂度为O(nm);好一点的方法:首先将数组完全反转,此时为6 5 4 3 2 1,然后对前n位再次反转,后面的不变,此时为4 5 6 3 2 1,然后对第n位之后的全部进行反转,即为4 5 6 1 2 3。,时间复杂度0(3m)

复试问题很少,如下:

会C或者C++吗?

学过C语言,但是不太熟悉,常用的是Java(os:我报的是Android岗位呀)

问题没了,问的就这一个,然后下边开始做题

第1题是Java题目,写出输出结果,考察的知识点是try、catch、finally

第2题还是写输出结果,考察的知识点是继承、静态代码块加载顺序问题,形如:

Child child=new Child();
Parent parent=new Child();

第3题是手写算法,给定一个数组,元素都是整型,然后给定一个S,输出三个数相加之和与S最接近的那三个数在原数组中的索引,然后就没有然后了...

总结来说,复试主要考察的是算法,所以挂了也是必然的,以后要继续加强对算法的强化

同花顺

因为我的项目中用到了长连接,所以面试官就以此为入口开始问问题了:

  • 长连接和短连接?
  • 三次握手?
  • 长连接是在Service服务中建立的吗?
  • Service保活问题?
  • 项目中有没有用过push?
  • 快速排序的思想?

大致说来就是先找切分点,然后对切分点左侧继续这个步骤,右侧继续这个步骤 寻找切分点:将第1个元素设为基准,j从后往前查找比基准小的数,i从前(第2个元素开始)往后查找比基准大的位置,找到之后两者交换,交换之后继续此步骤,直到i>j时停止,将j位置元素和基准交换,返回切分点j

  • Looper原理?
  • 课表控件原理?
  • java中gc回收原理?
  • 自定义View的过程?

神策数据

  • 线程池相关?
  • Android如何配置进程?
  • ButterKnife原理?
  • Android中怎么执行异步任务?
  • 项目中用过多线程吗?
  • 如何保证界面跳转过程中不出现回退很多下才会退出的问题?(其实问的就是LaunchMode的问题)
  • 加载模式有几种?
  • 课表控件原理?
  • 集合有哪几类?List和Set的区别?LinkedList和ArrayList的区别?
  • 根据项目来说明IO的运用?

总结来看,神策的面试官基本上把简历上写的东西都问了,我写了多进程、多线程、同步、异步,所以简历上写的东西一定要全部过一遍

同花顺

技术复试:

  • socket长连接、心跳保持
  • jni
  • 代码混淆
  • Android调试工具
  • JVM和DVM的区别
  • eclipse和Android Studio的区别
  • 使用原生写的软件越来越少,你的看法?
  • 网络请求框架

Hr面试:

  • 个人优缺点
  • 如何统计西湖中有多少条鱼
  • 最值得骄傲的一件事
  • 说下对我们公司的了解
  • 你是以什么样的标准来选择工作的?优先考虑哪方面?
  • 你还有什么想问的吗?

About

本仓库整理了LeetCode和剑指offer上的算法题目以及参考代码

Resources

Stars

23 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.