《深入理解计算机系统》—优化程序性能

程序一般从三个方面优化性能:①算法和数据结构②使编译器更好地优化③并发 消除循环的低效率: (1)可以在循环的时候避免一些重复性的判断(代码移动,将不必要的计算移动到循环外),例如: for(i = 0; i < get_length(vec); ++i) {/**/}这个代码的内部每次...

2017-11-23 21:17:01

阅读数 200

评论数 0

秋招总结

最近,有很多同学问找工作的情况,然后就写一篇博客总结一下自己的一些经验,希望能够帮到学弟学妹们(哈哈,莫名奇妙大了一届)。 1.关于实习(可能会有很多实验室不放实习,其实问题不大,可以忽略这一部分。) 实习招聘一般是在2月底三月初开始投递,笔试面试一直会持续到5月份。实习的期限一般是毕业前一年暑假...

2017-10-09 15:36:00

阅读数 321

评论数 2

面试复习------------数据库

1

2017-09-06 15:01:39

阅读数 180

评论数 0

面试复习-------算法与数据结构------算法设计

分治法 分治法的基本思想是将一个规模为n的问题分解为k个规模较小的问题,这些子问题互相独立且与原问题相同(所以可以递归)。递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。 分治一般有两步:①问题分解,递归求解②子问题解的合并 典型例子:归并排序 动态规划 动态规划也需要将问题进行分解...

2017-09-01 21:03:17

阅读数 158

评论数 0

面试复习-------算法与数据结构------二叉树

创建二叉树 (1)二叉树的反序列化 给定“6423####51##7##”(先序)这种序列,构造二叉树 TreeNode* preOrderToTree(string input,int& index) { if(input.length() == 0)return NULL; ...

2017-08-30 20:46:32

阅读数 173

评论数 0

面试复习-------算法与数据结构------二分搜索

面试中的查找算法有顺序查找、二分查找、哈希表查找以及二叉树查找。 哈希表查找通常用在字符串中的字符查找O(1),如:查找字符串中第一个只出现一次的字符。 如果说给定的序列是已经排序(或者是已排序的变种),那么大概率要使用二分查找。 (1)最左查找:给定一个有序(非降序)数组A,可含有...

2017-08-29 19:20:54

阅读数 155

评论数 0

面试复习-------算法与数据结构------链表

如果一个操作可能会改变头指针,那么参数应该是ListNode** phead 头插法和尾插法是指在建立单链表的时候,时间复杂度都是O(n) 将节点添加到一个已存在链表的尾部也是O(n),那么为何尾插法可以O(n)而不是O(n^2),原因是在创建的时候会维护一个链表尾部的指针。所以不用每次都循环寻找...

2017-08-24 17:28:02

阅读数 102

评论数 0

面试复习-------算法与数据结构------栈&队列

STL栈: 入栈:s.push(x); 出栈:s.pop()无返回值; 返回栈顶s.top() s.empty(),s.size().... STL队列: 入队:q.push(x)放到队列的末端; 出队:q.pop() 弹出队首无返回值 q.front()返回队首;q.back()返回队尾 q....

2017-08-23 15:05:07

阅读数 134

评论数 0

面试复习-------算法与数据结构------字符串

(1)数组排成最小的数(剑指offer33/leetcode179) 解题思路:关于数字的大数问题最终都要转换成字符串解决。在该题中,将vector 转换成vector,然后调用sort函数,需要定义sort第三个规则如下: static bool cmp(const string str1, ...

2017-08-20 20:58:43

阅读数 138

评论数 0

面试复习-------算法与数据结构------排序

(1)快速排序 最坏O(n^2),平均O(n*logn); 特点:每趟都选择一个基准数,排完使左边全部比基准小,右边全部比基准大 核心的partition函数如下: int Partition(int* arr, int left, int right) { if(left >= r...

2017-08-18 21:44:20

阅读数 180

评论数 0

面试复习-------算法与数据结构------实现库函数

库函数的实现 (1)字符串拷贝函数strcpy() /*********************************** 实现strcpy函数 输入:char* dest,char* src 输出:dest ***********************************/ char* ...

2017-08-18 19:44:15

阅读数 116

评论数 0

面试复习----多线程编程

C++11 新标准中引入了四个头文件来支持多线程编程,他们分别是  ,,,和。 :提供原子操作功能,该头文主要声明了两个类, std::atomic 和 std::atomic_flag,另外还声明了一套 C 风格的原子类型和与 C 兼容的原子操作的函数。 :线程模型封装,该头文件主要声...

2017-08-16 21:41:35

阅读数 201

评论数 0

面试复习—网络知识点-----UDP

一个UDP程序实例 与tcp程序不同的是,此处无连接,所以也不需要listen创建监听套接字,直接recvfrom接收数据,sendto发送数据 这两个函数原型: ssize_t recvfrom(int sockfd, void* buff, size_t nbytes, int flags...

2017-08-15 11:08:17

阅读数 135

评论数 0

面试复习—网络知识点-----tcp

(6)一个TCP程序实例 客户端: ①sockfd = socket(AF_INET, SOCK_STREAM, 0); 创建套接字AF_INET表示网际,SOCK_STREAM表示字节流,这两个加在一起就表示TCP套接字 ②struct sockaddr_in servaddr;//声明一个...

2017-08-15 11:06:23

阅读数 145

评论数 0

一些比较好的博客资料链接

C++开发者都应该使用的10个C++11特性 主要用到的一些: 1.auto的自动类型推断 2.nullptr可以用来代替NULL(0) 3.foeach的for循环

2017-08-02 17:27:12

阅读数 131

评论数 0

java面试资料—多线程

(1)关于java线程池 预先启动一些线程,线程无限循环从任务队列中获取一个任务进行执行,直到线程池被关闭。如果某个线程因为执行某个任务发生异常而终止,那么重新创建一个新的线程而已。如此反复。 流程: a.一个任务提交,如果线程池大小没达到corePoolSize(最小线程数量),则每次都启...

2017-07-31 16:18:37

阅读数 127

评论数 0

java面试资料—JVM相关

(1)类的实例化过程 ①首先会执行类中static代码块(不管代码块是否在类的开头还是末尾处),如果这个类有父类,同样会优先查找父类中的static代码块,然后是当前类的static。 ②然后会从父类的第一行开始执行,直至代码末尾处,中间不管是有赋值还是method调用,都会按顺序一一执行(met...

2017-07-31 16:18:24

阅读数 150

评论数 0

java面试资料-基础知识

(1)String类为什么是final? 主要是为了“效率” 和 “安全性” 的缘故。 若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。 为了程序的安全性,因为String类共享,所以要控制不能被修改。 (2)关于HashMap J...

2017-07-26 21:56:01

阅读数 330

评论数 0

常用的几种设计模式

1.单例设计模式singleton——只能产生一个实例化对象的设计模式 (为什么不用静态变量代替呢?因为静态变量在程序一开始就创建了对象,可能会比较消耗资源)public class Singleton { private static Singleton uniqueInstance; ...

2017-07-26 10:35:28

阅读数 228

评论数 0

常见的排序算法

排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。      我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,我们将围绕这...

2017-07-05 16:22:24

阅读数 217

评论数 0

提示
确定要删除当前文章?
取消 删除