2016年毕业到2020年工作整整满四年了,一直拧螺丝吧,拧多 了莫名其妙的自信,由于很多原因在快过年的季节选择了找工作,开始投简历,投了很多呀,就几家面试电话,以前简历随便一刷新很多面试电话的,内心有点失落,好不容易有几个面试电话,自信爆棚的我,选择了裸面,结果就被吊打,打得灰突突的,接下来分享下被吊打的面试题,有些题吧其实内心是知道怎么回事就是就表达的摸棱两可的。哈哈哈,总之内心真的很难过的ing、好了好了,看题目上代码
线程问题
线程问题吧,基本面试必问,不要有侥幸心理,真的,一定要看,看多了不伤身体。
-
定义:
什么是线程?
被定义为程序的执行路径,每个线程都定义了一个独特的控制流。如果应用程序设计到复杂的和耗时的操作,那么设置不同的线程执行路径是有益的,每个线程执行特定的工作。线程是轻量级别的进程。一个使用线程的常见实例是现代操作系统编程的实现。线程的生命周期
未启动状态:被创建但Start方法未被调用的状况。
就绪状态:当线程准备好运行并等待CPU周期的状况。
不可运行状态:已经调用sleep方法
已经调用wait方法
通过I/O操作阻塞 -
多线程 三特性
原子性:是指一个操作是不可中断的,即使是多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。
可见性 :当某个线程修改了其中一个公共变量,其他线程是否能立刻知道这个修改,串行线程中是不可知的
有序性 在并发时,程序的执行可能会出现乱序,给人的直观感觉就是,写在前面的代码会在后面执行。 -
保证线程安全手段
1.加锁
2. 使用InterLocked -
线程池
线程池是一个多线程处理形式,处理过程中将任务添加到队列中,然后在创建线程后自动保存。线程池都是后台线程,每个线程都是使用默认的堆栈大小,以默认的优先级运行、并处于多线程单元中。
C#反射
反射是指程序可以访问、检测、和修改它本身的状态或行为的一种能力