cyc2018 / cs-notes Goto Github PK
View Code? Open in Web Editor NEW:books: 技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计
Home Page: http://cyc2018.xyz
:books: 技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计
Home Page: http://cyc2018.xyz
Just a small misspelling I noticed when reading through the notes:
public class MallarDuck extends Duck{
public MallarDuck(){
flyBehavior = new FlyWithWings();
quackBehavior = new Quack();
}
}
Should read:
public class MallardDuck extends Duck{
public MallardDuck(){
flyBehavior = new FlyWithWings();
quackBehavior = new Quack();
}
}
之前看的时候好像还有[基础]+[数据结构]部分的内容,但是目前看好像被删掉了? 开始从算法直接开始了 请问这两部分还打算放上来嘛
https://github.com/CyC2018/Interview-Notebook/blob/master/notes/HTTP.md#%E7%BC%93%E5%AD%98
no-cache
并不是字面意思不要缓存,而是不要直接使用缓存,使用缓存之前先要跟服务端进行验证,检查缓存是否过期。
真正不要缓存的是 no-store
。
Java泛型详解链接失效。可以更改为此地址: http://www.importnew.com/24029.html
重定向怎么可能重定向到 10.xx.xx.xx 这样的保留地址呢?
负载均衡中很多地址用得都有问题,比如 DNS 负载均衡的,客户端怎么可能通过访问 10.xx.xx.xx 这样的保留地址访问到自己需要的服务呢?除非同在一个局域网。
HTTP 重定向做负载均衡,1、需要有一个公网 IP;2、需要暴露服务器到公网
web 页面请求过程这是一个挺大的话题。
针对第3点,服务器应该不是随机与分配一个端口与客户端连接吧。
原因:
最后一点我也不清楚:如果服务器重新分配一个端口与客户端连接,这样不会引发 TCP 再次握手吗?
这个问题听说在挺多面试中出现过,希望作者能够进一步详细分析,谢谢你的分享。
原文:可能存在“已失效的连接请求报文段”,为了防止这种报文段出现在本次连接之外,需要等待一段时间。
疑问:应该是为了防止这种报文段出现在本次连接之中吧?
在公式中只出现了 RTT 并没有出现过 RRT。google 也没有搜到 RRT
semaphore mutex = 1;
void philosopher(int i) {
while(TURE){
think();
down(mutex);
down(chopstick[LEFT[i]]);
down(chopstick[RIGHT[i]]);
up(mutex);
eat();
down(mutex);
up(chopstick[RIGHT[i]]);
up(chopstick[LEFT[i]]);
up(mutex);
}
}
试想一下 5 个哲学家,假设哲学家1首先执行 down(mutex)
成功,然后把左右筷子都拿着 down(chopstick[0])
down(chopstick[1])
都拿到手,然后很自信地释放了 up(mutex)
,开心地吃饭了。
在此期间,哲学家5成功执行了 down(mutex)
,并且成功地拿到了左边的筷子 down(chopstick[4])
,但发现右边筷子被哲学家1用着,无奈又陷入了漫长的思考中。哲学家1吃饱了,觉得应该开始思考人生了,想放下筷子,但是 down(mutex)
一直阻塞。
原因:哲学家5拿着 mutex 不肯放,一直要等到拿到右边的筷子 chopstick[0]
,但是哲学家1想要让出 chopstick[0]
,但是先要拿到 mutex。Oops,死锁。
异步指进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。
有点懵逼,,,
阐述了交换机在数据链路层工作,那后面为什么说维护这 ip 到 mac 的映射表呢?这不是上文说路由器干的事情吗? 我记得之前老师说过是交换机维护这 mac 地址和交换机插孔的映射吧。
但现代交换机确实具有部分路由器的功能
文章地址:https://github.com/CyC2018/Interview-Notebook/blob/master/notes/JVM.md
"让所有存活的对象都向一段移动,然后直接清理掉端边界以外的内存。"
"向一段移动" ==> "向一端移动"
感谢 repo主的无私奉献。可以将内容同步到gitbook上吗?也可以做成PDF作为release.
int[] arr = {1, 2, 3};
list = Arrays.asList(arr);
arrays.aslist有缺陷,只能使用包装类做转换,上面的代码打印出来的size为1
详细介绍地址:
http://wiki.jikexueyuan.com/project/java-enhancement/java-thirtysix.html
二分搜索不理解,全部异或的做法可行
https://github.com/CyC2018/Interview-Notebook/blob/master/notes/Git.md#%E5%86%B2%E7%AA%81
产生冲突不是因为修改了同一个文件,而是修改了同一个文件的同一行。
但是不鼓励在不修改同一行下修改同一个文件
Can someone please translate this to english. This repo will be a great success in english speaking people
描述中,管道把一个进程的标准输出和另一个进程的标准输入连接在一起。
我认为这是有问题的,进程间通信使用管道,但是把一个进程的标准输出和另一个进程的标准输入连接在一起是针对 Unix 终端的用法吧。而不是所有管道都是如此吧,Unix 下一切皆文件,管道也应该是文件。
再说如果所有管道都是标准输入流和标准输出流的对接,那么用户从标准输入流再输入点什么不就乱套了?我任务这种描述有问题。
您好,因为您没有添加开源协议,因此我们希望能够获得授权来转载这篇资源帖,感谢!
看了一下工厂模式的图,发现UML类图相当的精美,想问一下用的是什么软件画的UML类图?
哲学家问题最初由 Dijkstra提出 哲学家就餐问题,当时这个问题确实是用哲学家吃饭来描述的。但是这里不得不说死锁与活锁的区别,死锁不会自行解开,而活锁有可能自行解开,当然理论上如果这个时间是严格相同的,那么这个活锁产生的影响与死锁自然也有很大程度上是相似的。所以哲学家吃饭问题那一块还是需要修正一下。另外,对于这个问题还有一种可行的解决方式就是引入一个调度员,相当于一个服务生或者侍者,当某个哲学家需要吃饭时,就让服务员来调度餐具。
个人认为分布式系统相关的问题也经常出现面试中。
on: notes/代码可读性.md
under: 八,分裂的长期表达
(Eight, split the long expression)
Use Morgan Theorem to simplify some logical expressions:
if(!a && !b) {
...
}
if(a || b) {
...
}
should be:
if(!a && !b) {
...
}
if(!(a || b)) {
...
}
hi~
目前看到了只有java这一块的内容,我可以增加Go&PHP相关内容, 请问要如何参与, 或者遵循什么规范? 方便的可以通过邮箱联系我. 3Q~
Java 基础语法 似乎乱码?
是不是应该是
dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])
下面这个,没有看太懂呢
dp[i] = max(dp[i - 2], dp[i - 3]) + nums[i]
你的算法描述:
从左往右投飞镖,并且在每次投飞镖时满足以下条件:
你的代码中的算法应该描述为:
在左边的气球先于右边气球破的前提下,保证每次破的气球数量要最大。
如果你有疑问可以用我这个 TestCase 测试你的算法描述:
[[1, 100], [4, 500], [5, 19], [90, 100], [100, 200]]
按照你的文字描述应该先破:[1,100], [4, 500], [90,100], [100,200]
再破 [5,19]
而你的代码中的顺序应该是:[1,100], [4,500], [5,19]
再破 [90, 100], [100, 200]
原文:
抽象类与接口
抽象类至少包含一个抽象方法
疑问:
抽象类中可以不包含抽象方法的。
原文:
例如一个应用有手机 APP 端和 Web 端,如果在两个客户端同时进行一项操作时,那么就会导致这项操作重复进行。
这样的场景并不一定要使用分布式锁哈。即使存在多个客户端,但如果后端服务仍然是单机也就是单进程的用 Java 内置锁依然可以哦。
你应该想描述的是当后端的应用分布式部署时,比如订单服务有两台 A 和 B。当 APP 的请求路由到了 A 服务,WEB 端被路由到了 B 服务,这时对共享资源进行使用时需要使用分布式锁。
It would've been cool if someone could translate it to English.
https://github.com/CyC2018/Interview-Notebook/blob/master/notes/HTTP.md#%E8%AE%A4%E8%AF%81
除了服务端需要认证客户端身份之外,客户端也要认证服务端的身份的。
所以客户端拿到服务端的证书之后需要到 CA 进行证书的验证,而不是直接就开始通信的。因为有可能存在本地 hosts 被修改(可以通过修改 hosts 翻墙)、基站等情况。
💡 可以是本仓库还没有的内容,也可以是本仓库已经有但是还不够完善的内容。
11111111 11111111 11000000 000000
最后只有 6 个 0
https://github.com/CyC2018/Interview-Notebook/blob/master/notes/HTTP.md#%E8%AE%A4%E8%AF%81
除了拼写错误还有一个问题:
多列索引中的示例 SQL 不好,并没有显示多列索引的优势
SELECT film_id, actor_ id FROM sakila.film_actor
WhERE actor_id = 1 OR film_id = 1;
假如本例中多列索引为:(actor_id, film_id)
B-Tree 中是先按照 actor_id 进行排列,相同的 actor_id 再根据 film_id 进行排列。
本例中使用了 OR 关键字,这样的话导致索引查询中找到 actor_id = 1
此处使用了索引,但是 OR film_id = 1
中并不能使用 (actor_id, film_id) 的索引。
建议例子把 OR 改为 AND :
SELECT film_id, actor_ id, xxx FROM sakila.film_actor
WhERE actor_id = 1 AND film_id = 1;
这样的话,在查询索引中,找到了 actor_id = 1
后可以继续使用索引查询满足 film_id = 1
的数据。
多加 xxx 查询项是像以下查询语句就编程了判断表中有多少满足 actor_id = 1 AND film_id = 1
的数据(通过判断返回的行数可知)。
SELECT film_id, actor_ id FROM sakila.film_actor
WhERE actor_id = 1 AND film_id = 1;
在介绍 MySQL 的存储引擎:MyISAM 和 Innodb 的时候最好提一下他们的应用场景,而他们的引用场景是由其内部实现决定的。
比如:
MyISAM 的索引中叶子结点存储的是数据具体存放的位置,而 Innodb 的非聚簇索引的索引叶子结点存放的是 primary key。这样导致在只读场景 MyISAM 更加快,因为不需要再次查询 B-Tree。
Innodb 的事务是通过 undo、redo 等日志实现的。
BTW,谢谢分享。
第一层循环应该是0到h-1
例如跳跃表。
我感觉本文所有对于项目资源的链接(比如超链接,图片等)似乎都是用的绝对路径,这样似乎不太妥。我感觉应该换成相对路径比较好,一来当我们fork项目的时候就可以链接到自己的项目,而来这样也比较方便制作成gitbook。。。
Machine Learning is really popular today, bringing many work opportunities. I think it should be included in a job interview.
统计个数的时候,你把len2丢了
对题目做了一个分类,并对每种题型的解题思路做了总结。已经整理了 300+ 的题目,基本涵盖所有经典题目
-- 这里好像并没有够300+
Hi, thanks for sharing your notebook.
But the description in Java 基础.md / 抽象类与接口
contains stale info about interface
.
Java 8 has enhanced interface. You can implement methods within an interface.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.