一、微软外包电话面试
1、描述事务与锁
事务是用来保证数据的一致性( integrity )而锁是保证数据的并发(控制多个事务的并发)( concurrency )。 锁的级别越高,可能会影响数据库的并发。锁的级别越低一般来说数据库的并发越好。
2、asp.net 生命周期
页请求 -> 开始 -> 页初始化 -> 加载 -> 验证 -> 回发事件处理 -> 呈现 -> 卸载
Page Request -> Start -> Page Initialization -> Load -> Validation -> Postback event handling -> Rendering -> Unload
页面生命周期
OnpreInit(默认值初始化控件) -> Oninit(初始化自定义控件) -> OninitComplate(完成Oninit时触发) -> LoadViewState
(导入viewstate数据) -> LoadPostData(处理回发数据) -> OnpreLoad -> OnLoad -> RaisePostDataChanged
(标记每个控件有没有更新) -> RaisePostBackEvent -> Page_OnLoadComplate -> OnPreRender(预呈现) ->
OnPreRenderComplate(完成预呈现) -> SaveControlState(保存控件状态) -> SaveViewState() -> Render
(呈现html) -> Page_UnLoad(销毁对象)
3、多线程编程需要注意
a、避免直接使用全局变量,当两个线程同时操作该变量时,会出现脏读;
b、通过接口访问,A线程访问该接口时,需要enterCriticalSection(临介区) 控制,
则B线程访问时也需要enterCriticalSection控制;
c、最好通过消息|队列方式,每次A线程会备份某全局变量,B线程访问备份,避免出现脏读;
d、多线程资源竞争的问题;
e、多线程间同步的问题;
4、性能优化从哪些方面入手
数据库方面,sql的性能;
业务逻辑代码的提高;
前端优化,如 js、css 等
5、单例模式写法与做用
方式一:(单线程调用时)
方式二:
单例模式(Singleton)模式主要作用是保证在应用程序中,一个类只有一个实例存在。